Pandas 数据分析常用函数使用攻略
Pandas 是一个 Python 数据分析库,提供了大量的灵活高效的数据结构和函数,具有数据清洗、数据处理、数据分析、数据可视化等功能。
本篇攻略主要介绍 Pandas 数据分析常用函数的使用,内容包括:
- 数据结构介绍
- 常用数据操作函数
- 数据的聚合和分组
- 数据的合并和连接
- 数据的可视化
数据结构介绍
Pandas 主要提供了两种数据结构:Series 和 DataFrame,Series 是一维数据结构,类似于一列数据,DataFrame 是二维数据结构,类似于多行多列的表格。
Series
Series 是一种类似于数组的数据结构,由一组数据以及一组与之关联的数据标签(索引)组成。
创建 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
DataFrame
DataFrame 是一种类似于表格的二维数据结构,包含了行标签和列标签。
创建 DataFrame 对象的方式如下:
import pandas as pd
import numpy as np
df = pd.DataFrame({
'A': 1.,
'B': pd.Timestamp('20130102'),
'C': pd.Series(1, index=list(range(4)), dtype='float32'),
'D': np.array([3] * 4, dtype='int32'),
'E': pd.Categorical(["test", "train", "test", "train"]),
'F': 'foo'
})
print(df)
输出结果如下:
A B C D E F
0 1.0 2013-01-02 1.0 3 test foo
1 1.0 2013-01-02 1.0 3 train foo
2 1.0 2013-01-02 1.0 3 test foo
3 1.0 2013-01-02 1.0 3 train foo
常用数据操作函数
读取数据
Pandas 支持读取多种格式的数据,如 CSV、Excel、SQL 数据库,常用函数包括 read_csv、read_excel、read_sql 等。
以 read_csv 函数为例,读取一个 CSV 文件:
import pandas as pd
df = pd.read_csv('file.csv')
print(df)
筛选数据
Pandas 提供了多种方式进行数据的筛选、过滤,常用函数包括 loc、iloc、isin、query 等。
以 loc 函数为例,通过标签筛选数据:
import pandas as pd
data = {'name': ['Tom', 'Jack', 'Steve', 'Ricky'],
'age': [28, 34, 29, 42]}
df = pd.DataFrame(data)
result = df.loc[df['age'] > 30]
print(result)
排序数据
Pandas 支持按照指定的列或行进行排序,常用函数包括 sort_values、sort_index 等。
以 sort_values 函数为例,按照 age 列进行降序排序:
import pandas as pd
data = {'name': ['Tom', 'Jack', 'Steve', 'Ricky'],
'age': [28, 34, 29, 42]}
df = pd.DataFrame(data)
result = df.sort_values('age', ascending=False)
print(result)
数据的聚合和分组
Pandas 支持将数据分成多个组,并对每个组进行聚合计算,常用函数包括 groupby、agg、apply 等。
以 groupby 函数为例,对数据按照 age 列进行分组,并计算每组的平均值:
import pandas as pd
data = {'name': ['Tom', 'Jack', 'Steve', 'Ricky'],
'age': [28, 34, 29, 42]}
df = pd.DataFrame(data)
result = df.groupby('age').mean()
print(result)
数据的合并和连接
Pandas 支持将多个数据结构合并成一个,常用函数包括 merge、concat、join 等。
以 merge 函数为例,将两个 DataFrame 对象按照指定的键值进行合并:
import pandas as pd
left = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3']})
right = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
'C': ['C0', 'C1', 'C2', 'C3'],
'D': ['D0', 'D1', 'D2', 'D3']})
result = pd.merge(left, right, on='key')
print(result)
数据的可视化
Pandas 提供了简单易用的可视化工具,可以生成多种类型的图表,常用函数包括 plot、hist、scatter 等。
以 plot 函数为例,生成一个简单的折线图:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
s = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000))
s = s.cumsum()
s.plot()
plt.show()
示例
下面给出一个示例,读取一个 CSV 文件,筛选出 age 大于 25 的行,并按照 sex、age 列进行分组计算平均值:
import pandas as pd
df = pd.read_csv('data.csv')
result = df.loc[df['age'] > 25].groupby(['sex', 'age']).mean()
print(result)