最近使用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
使用index和columns属性可以遍历数据:
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)