Pandas使用手册

190 阅读2分钟

最近使用Pandas库操作CSV文件,对学习到的使用方法进行一个记录。

读取CSV文件

使用read_csv()方法读取CSV文件。

import pandas as pd

data = pd.read_csv('data/01.csv', delimiter=',', dtype=float)
参数描述
filepath_or_buffer读取文件路径
delimiter分隔符
dtype数据类型
encoding文件编码

如果读取文件时出现编码报错,可将编码设置为gb18030

data = pd.read_csv('data/01.csv', delimiter=',', dtype=float, encoding='gb18030')

保存为CSV文件

使用to_csv()方法将数据写入csv文件:

data.to_csv('out/data.csv', index=False)
参数描述
path_or_buf文件路径
index是否输出索引列,默认为 True
encoding编码

遍历每行数据

Pandas按行遍历数据有多种方法。目前只记录两种方法。

iloc

iloc属性提供像数组一样按照索引遍历的方法:

for i in range(data.shape[0]):
    for j in range(data.shape[1]):
        print(data.iloc[i, j])	# 注意是[i,j],而不是[i][j]

loc

和iloc用法类似,但是可以通过列名进行遍历:

for i in range(len(data)):
    print(data.loc[i, 'a'])

index

使用indexcolumns属性可以遍历数据:

for i in data.index:
    for col in data.columns:
        print(data[col][i])	# 注意是col在前面

重命名列名

Pandas的数据格式是一个二维数据表,每列数据有一个列名(表头)。可以通过columns属性查看列名:

import pandas as pd

data = pd.DataFrame({
    'a': [1, 2, 3],
    'b': [4, 5, 6]
})
print(data.columns)
# Index(['a', 'b'], dtype='object')

如果我们想将数据表中的列名a修改为大写A,可以使用rename()方法:

data.rename(columns={'a': 'A'}, inplace=True)

columns参数传入字典表示替换后的列名,inplace表示是否原地修改,设置为True表示直接操作对data进行修改,再次打印列名即可发现修改成功。

print(data.columns)
# Index(['A', 'b'], dtype='object')

删除指定列数据

读取的数据中有的列我们不需要,可以使用drop()方法删除指定的列,colums参数表示需要删除的列名,方法返回删除后的数据。

data = data.drop(columns=['Name', 'Id'])

删除指定行数据

对于行数据,同样可以使用drop()方法进行删除,index参数表示需要删除的行索引。

data = data.drop(index=[0,1,2,3])

判断元素是否为NaN

有的数据有缺失,读取后对应的位置就是NaN,可以使用isna()isnull()判断一个元素是不是NaN

print(pd.isna(data.iloc[i, j]))
print(pd.isnull(data.iloc[i, j]))

插入一列数据

当我们需要在数据中添加一列数据时,使用insert()方法实现

data.insert(data.shape[1], 'H', 6)
  • 第一个参数表示插入的列索引;
  • 第二个参数是列名;
  • 第三个参数是插入的数据,可以是一个值也可以是列表;

重置索引

当我们对数据删除某些行或排序时,DataFrame的行索引不会重置,可以使用reset_index()方法重置索引:

df.reset_index(drop=True)