欢迎访问宙启技术站
智能推送

“如何使用Python的pandas库进行数据处理和分析?”

发布时间:2023-05-31 14:38:52

Pandas是一个数据处理和分析工具,是基于Numpy构建的。在数据处理和分析中,Pandas通常被用于数据清洗、数据格式转换、数据聚合、数据统计和可视化等领域。下面,本文将为大家介绍如何使用Python的Pandas库进行数据处理和分析。

一、数据结构

Pandas在处理数据时,主要涉及三种数据结构——Series(数据序列)、DataFrame(数据框架)和Panel(数据面板)。其中,Series是一种一维的数组结构,DataFrame是一种二维的表格结构,Panel是一种三维的数据结构。

1、Series

Series可以看作是一个带有标签的数组,其中每个元素都对应着一个标签。Series的创建方法有多种。例如,可以通过列表或NumPy数组来创建一个Series:

import pandas as pd

import numpy as np

s = pd.Series([1,3,5,np.nan,6,8])

print(s)

输出结果如下:

0    1.0

1    3.0

2    5.0

3    NaN

4    6.0

5    8.0

dtype: float64

其中,np.nan表示数据缺失,float64表示数据类型。

2、DataFrame

DataFrame是一种表格型的数据结构,在Excel中也是常见的数据结构,可以看作是由多个Series组成的二维数组。同样,DataFrame有多种创建方式,如下所示:

import pandas as pd

data = {'name':['Tom', 'Jerry', 'Kate', 'Lucy'], 'age':[30,20,25,40]}

df = pd.DataFrame(data)

print(df)

输出结果如下:

   name  age

0   Tom   30

1 Jerry   20

2  Kate   25

3  Lucy   40

3、Panel

Panel是一种三维的数据结构,数据排列方式是DataFrame的一种扩展,由于三维数组不太容易解释,因此Panel被慢慢弃用,不过在某些数据分析中,还是需要使用Panel。

二、数据处理

在处理数据的过程中,Pandas提供了很多常用的函数,如下所示。

1、数据读取

通常,我们需要从文件中读取数据,Pandas可以读取CSV、Excel、SQL、HTML等多种格式的数据文件,常用的读取函数有read_csv、read_excel、read_sql和read_html等。

import pandas as pd

# 读取csv文件

data = pd.read_csv('data.csv', encoding='gbk')

print(data.head())

输出结果如下:

2、数据清洗

数据清洗是数据处理的重要步骤之一,它主要包括缺失值处理、重复值处理和异常值处理。

(1)缺失值处理

在实际的数据处理中,经常会遇到缺失值的情况,Pandas提供了fillna函数来填补缺失值,也可以通过dropna函数来删除缺失值。

import pandas as pd

import numpy as np

df = pd.DataFrame(np.random.randn(5, 3), index=['a', 'c', 'e', 'f', 'h'], columns=['one', 'two', 'three'])

df = df.reindex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])

print(df)

df = df.fillna(method='pad')

print(df)

输出结果如下:

      one       two     three

a  0.019402 -0.921641  0.191484

b       NaN       NaN       NaN

c -0.099324 -1.728283 -0.545350

d       NaN       NaN       NaN

e -0.145514  0.383455 -1.825734

f  0.408683 -1.343817 -0.804282

g       NaN       NaN       NaN

h  0.154712 -0.700980  0.819331

        one       two     three

a  0.019402 -0.921641  0.191484

b  0.019402 -0.921641  0.191484

c -0.099324 -1.728283 -0.545350

d -0.099324 -1.728283 -0.545350

e -0.145514  0.383455 -1.825734

f  0.408683 -1.343817 -0.804282

g  0.408683 -1.343817 -0.804282

h  0.154712 -0.700980  0.819331

(2)重复值处理

重复值是指在数据中同一条记录出现多次的情况,它可能会引起一些问题,如计算结果不准确等。Pandas提供了duplicated和drop_duplicates函数来处理重复值。

import pandas as pd 

data = pd.DataFrame({'name':['Tom', 'Jerry', 'Kate', 'Lucy', 'Lucy'], 'age':[30,20,25,40,40]})

print(data.duplicated())

print(data.drop_duplicates())

输出结果如下:

0    False

1    False

2    False

3    False

4     True

dtype: bool

    name  age

0    Tom   30

1  Jerry   20

2   Kate   25

3   Lucy   40

(3)异常值处理

异常值是指在数据中出现与预期结果明显不同的值,它可能会导致数据不准确。Pandas提供了quantile函数来处理异常值。

import pandas as pd 

data = pd.DataFrame({'name':['Tom', 'Jerry', 'Kate', 'Lucy'], 'age':[30,20,25,100]})

q_low = data['age'].quantile(0.025)

q_high = data['age'].quantile(0.975)

data = data[(data['age'] > q_low) & (data['age'] < q_high)]

print(data)

输出结果如下:

    name  age

0    Tom   30

1  Jerry   20

2   Kate   25

3、数据分组

在数据分析中,数据分组是一个重要的步骤,Pandas有一些常用的函数可以对数据进行分组,其中groupby函数是最常用的函数之一。

import pandas as pd

data = {'name':['Tom', 'Jerry', 'Kate', 'Lucy', 'Tom', 'Jerry', 'Jerry'], 'age':[30,20,25,40,50,30,20]}

df = pd.DataFrame(data)

grouped = df.groupby('name')

print(grouped['age'].agg([np.sum, np.mean]))

输出结果如下:

        sum       mean

name                  

Jerry    70  23.333333

Kate     25  25.000000

Lucy     40  40.000000

Tom      80  40.000000

4、数据统计

Pandas提供了多种常用的数据统计分析函数,例如mean、sum、max、min、median和std等。

import pandas as pd 

data = pd.DataFrame({'name':['Tom', 'Jerry', 'Kate', 'Lucy'], 'age':[30,20,25,40]})

print(data.mean())

print(data.max())

print(data.std())

输出结果如下:

age    28.75

dtype: float64

name    Tom

age      40

dtype: object

age    7.088723

dtype: float64

5、数据可视化

Pandas也允许用户通过matplotlib库进行数据可视化,可视化数据可以更好地理解数据之间的关系,以及数据趋势等。

import pandas as pd 

import matplotlib.pyplot as plt

data = pd.DataFrame({'name':['Tom', 'Jerry', 'Kate', 'Lucy'], 'age':[30,20,25,40]})

plt.plot(data['name'], data['age'])

plt.show()

输出结果如下:

结论

通过使用Python的Pandas库,我们可以对数据进行处理和分析,包括数据结构、数据读取、数据清洗、数据分组、数据统计和数据可视化等方面。在实际的数据处理和分析中,Pandas是一个非常优秀的工具,其功能