那么下面我来详细讲解Pandas常用函数的完整攻略,包含一些实例说明。
一、Pandas概述
Pandas是一个基于NumPy的Python数据分析库,可用于大量数据处理任务,例如合并、切片、筛选、聚合等数据处理。它具有以下优点:
- 提供了灵活的数据结构DataFrame和Series,方便数据操作;
- 可以高效地处理大型数据集;
- 可以自动对齐数据;
- 可以快速处理缺失数据;
- 可以轻松处理时间序列数据。
二、创建DataFrame和Series
DataFrame是Pandas中最基本的数据结构,可以将数据处理为二维表格形式,而Series则是一维数组形式的数据结构。
创建DataFrame和Series的方法
import pandas as pd
# 创建Series
s = pd.Series([1, 3, 5, np.nan, 6, 8])
# 创建DataFrame
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'
})
在这里,我们创建了一个Series和一个DataFrame。Series中包含了1, 3, 5, np.nan, 6, 8六个元素,其中有一个缺失值np.nan;DataFrame中包含了六列数据,分别是A、B、C、D、E、F。A列的每个元素都是1.0,B列的每个元素都是pd.Timestamp('20130102')表示的时间戳,C列的每个元素都是1,D列的每个元素都是3,E列包含了四个分类数据,F列的每个元素都是'foo'。
查看DataFrame和Series数据
# 查看Series
print(s)
# 查看DataFrame中前两行数据
print(df.head(2))
# 查看DataFrame中后三行数据
print(df.tail(3))
# 查看DataFrame中的索引
print(df.index)
# 查看DataFrame中的列名
print(df.columns)
# 查看DataFrame中的数据(二维数组)
print(df.values)
# 查看DataFrame中的描述性统计量
print(df.describe())
三、选择数据
选择列(Series)
# 选择DataFrame中的A列
print(df['A'])
# 选择DataFrame中的1-3行的A列
print(df[:3]['A'])
选择行
# 按位置选择行
print(df.iloc[3]) # 选择第四行
# 按标签选择行
print(df.loc[2]) # 选择标签为2的行
# 按条件选择行
print(df[df['A'] > 1]) # 选择A列中大于1的行
选择行和列
# 选择第1行第1列的数据
print(df.iloc[0, 0])
# 选择前三行,B、D两列的数据
print(df.loc[:2, ['B', 'D']])
# 选择第3行,C列的数据
print(df.loc[2, 'C'])
四、数据清洗
处理缺失数据
# 创建一个包含缺失值的DataFrame
df_missing = pd.DataFrame({'A': [1, 2, np.nan, 4], 'B': [5, np.nan, 7, 8], 'C': [9, 10, 11, np.nan]})
# 判断是否有缺失数据
print(df_missing.isna())
# 删除包含缺失数据的行
df1 = df_missing.dropna(axis=0, how='any')
# 将缺失数据填充为0
df2 = df_missing.fillna(0)
# 将缺失数据填充为列的均值
df3 = df_missing.fillna(df_missing.mean())
处理重复数据
# 创建包含重复数据的DataFrame
df_duplicates = pd.DataFrame({'A': [1, 1, 2, 3], 'B': [4, 5, 6, 7], 'C': [8, 9, 9, 10]})
# 判断是否有重复数据
print(df_duplicates.duplicated())
# 删除重复数据
df4 = df_duplicates.drop_duplicates()
五、数据分组
# 创建DataFrame
df_group = pd.DataFrame({'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],
'C': np.random.randn(8),
'D': np.random.randn(8)})
# 按A列分组,计算C和D的均值
print(df_group.groupby('A').mean())
# 按A、B两列分组,计算C和D的均值
print(df_group.groupby(['A', 'B']).mean())
六、数据合并
拼接(Concatenating)数据
# 创建DataFrame
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3'],
'C': ['C0', 'C1', 'C2', 'C3'],
'D': ['D0', 'D1', 'D2', 'D3']})
df2 = pd.DataFrame({'A': ['A4', 'A5', 'A6', 'A7'],
'B': ['B4', 'B5', 'B6', 'B7'],
'C': ['C4', 'C5', 'C6', 'C7'],
'D': ['D4', 'D5', 'D6', 'D7']})
df3 = pd.DataFrame({'A': ['A8', 'A9', 'A10', 'A11'],
'B': ['B8', 'B9', 'B10', 'B11'],
'C': ['C8', 'C9', 'C10', 'C11'],
'D': ['D8', 'D9', 'D10', 'D11']})
# 沿着轴0拼接三个数据
print(pd.concat([df1, df2, df3], axis=0))
合并(Merging)数据
# 创建DataFrame
df_left = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3']})
df_right = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
'C': ['C0', 'C1', 'C2', 'C3'],
'D': ['D0', 'D1', 'D2', 'D3']})
# 按key列合并两个DataFrame
print(pd.merge(df_left, df_right, on='key'))
七、将数据写入文件
# 创建DataFrame
df_write = pd.DataFrame({'Name':['Tom', 'Jerry', 'Spike', 'Tyke'],
'Score':[90, 80, 70, 60],
'Gender':['M', 'M', 'M', 'F']})
# 将DataFrame写入CSV文件中
df_write.to_csv('data.csv', index=False)
以上就是Pandas常用函数的完整攻略。通过对Pandas中各个常用函数的学习,我们可以更加高效地进行数据处理与分析。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Pandas 常用函数 - Python技术站