pandas常用函数整理

Pandas是基于NumPy的一种工具,专门用于解决数据分析任务。Pandas提供了大量便于快速处理数据的函数和方法,本文将其中常用的部分进行汇总记录。

1. 文件处理

# 读取文件
df = pd.read_csv(path='file.csv')
"""
参数: 
    header=None  # 文件中不包含列名,df默认为0, 1, 2, 3...
    names=['A', 'B', 'c', ...]  # 自定义列名
    skiprows=[0, 1, 2]  # 需要跳过的行号,从文件头0开始
    nrows=N  # 需要读取的行数
    chunksize=M  # 每M次迭代一次,返回TextFileReader类型,用于大文件
    encoding=None  # 'ansi', 'utf-8', 'big5'
"""

dfex = pd.read_excel('file.xlsx', sheetname=[0, 1])  # 读取多个sheet页,返回df字典

# 保存文件
df.to_csv('./data/data_extracted.csv', encoding='gbk', index=None)

# 合并文件
pd.merge(df1, df2, on='common_col', how='inner', sort=True)  # 按照公共列合并两个DataFrame,inner/outer为交集/并集
pd.merge(df1, df2, left_on='col1', right_on='col2')  # df1,df2无公共列名,需指定两边的参考列

2. 数据查看

# 数据查看
df.shape  # 查看数据维度
df.head(n=N)  # 前N行
df.tail(n=M)  # 后M行
df.values()  # 值的二维数组,numpy.ndarray. 推荐使用df.to_numpy()
df.columns  # 列明,可以直接通过赋值修改
df.index  # 索引名,不可以直接赋值修改
df.reindex(index=['row1', 'row2'], columns=['col1', 'col2'])  # 根据新索引重新排序

# 数据选择
df[m:n]
df[df['col1'] > 1]  # 选取满足条件的行
df.query('col1 > 1')  # 选取满足条件的行
df.iloc[m:n]  # 根据index选取行或列,m-(n-1)行
df.loc['1':'m', 'col1':'coln']  # 根据index名称和columns选取区域,1-m行1-n列

3. 数据处理

# 重复、nan处理
df.duplicated()  # 返回各行是否是上一行的重复
df.drop_duplicates()  # 删除重复行,可根据列过滤
df.fillna(0)  # 实数0填充nan
df.dropna(axis=0, how='all')  # 删除值全为nan的行 (axis:0/1, how:'all'/'any')

# 删除
del df['col']  # 直接删除某一列
df.drop(list(range(5)), axis=0)  # 删除前5行
df.drop(['col1', 'col2'], axis=1)  # 删除指定列
new_index = df.reset_index(drop=False)  # drop=True时重置df的索引

# 行列index重命名
df.rename(index={'row1':'A'}, 
          columns={'col1':'A1'}

df.replace(20, 30)  # 将20替换为30
          
df['col1'].map(func)  # Series.map, 只对列进行函数转换          
          
df.stack()  # 将二维数据压缩为一维,按属性组合: rows, cols -> (row * cols), 1
df.unstack()  # 如果某一列具有较少类别,就把这些类别拉出来做为列
df.pivot()  # 将数据集压扁

4. 数据运算与排序

df.T  # DataFrame转置
df1 + df2  # 按照索引和列相加,得到并集,NaN填充
df * N  # 所有元素乘以N
df.sort_index(axis=0, ascending=True)  # 按行索引升序排列
df.sort_index(by=['col1', 'col2'])  # 按指定列优先排序

参考文献
[1] pandas常用函数

posted @ 2021-08-08 17:55  Js2Hou  阅读(254)  评论(0编辑  收藏  举报