【python pandas】读取和操作 csv 文件内容

文章目录

  • 1. pd.read_csv(file_path) 直接读取
  • 2. pd.read_csv(file_path,names:list) 的 names 参数
  • 3. 分批处理数据
    • 3.1 设置 chunksize 参数
    • 3.2 设置 skiprows 和 nrows 参数

1. pd.read_csv(file_path) 直接读取

参考:【python pandas】读取和操作 Excel 表格内容

因为 csv文件和excel表格用 excel打开是完全相同的,二者的数据类型都是 DataFrame,所以pandas操作csv文件和excel表格的方法是完全相同的。唯一的不同是读取文件时的函数不同:

读取excel:data = pd.read_excel(file_path)
读取csv:data = pd.read_csv(file_path)

测试文件(test.csv)如下:

学生姓名,学生学号,考试成绩
猪小明,ST001,98
妹大爷,ST002,75
冷檬,ST003,85
闰土,ST004,75
王炸,ST005,93
茅台,ST006,75
球球,ST007,63

计算所有学生的平均成绩(保留两位小数):

import pandas as pd

score_data = pd.read_csv('test.csv', usecols=['考试成绩'])
score_sum, score_num = 0, 0
for index in score_data.index:
    score_sum += score_data.loc[index].values.item()
    score_num += 1
print(f"平均成绩: {score_sum / score_num :.2f}")
# 平均成绩: 80.57

通过实验发现,处理excel表格非常耗时间,而处理csv文件非常快,所以我们应当优先使用csv文件格式进行存储。

2. pd.read_csv(file_path,names:list) 的 names 参数

names=[name1,name2,…] 用于给没有表头信息的 csv 文件加表头(即列名)。

参考 pandas.read_csv() 参数 names整理

3. 分批处理数据

当 csv 数据量太大时(几百万行),直接加载耗时太长,还容易导致程序或内存奔溃,可以采用两种方式。

3.1 设置 chunksize 参数

推荐使用这种方式,速度快,内存占用小。

import pandas as pd

# 照每次 10000 行的大小进行分块读取
chunks = pd.read_csv('data.csv', chunksize=10000)
for chunk in chunks:
    print(chunk)

3.2 设置 skiprows 和 nrows 参数

不推荐这种方式,速度慢。

  • skiprows 用于跳过指定的行:
import pandas as pd
 
def logic(index):
    if index % 3 == 0:
        return True
    return False
 
# 每隔 3 行跳过一次
df = pd.read_csv("data.csv",skiprows = lambda x: logic(x)) 

# 跳过第 1,3,5,7 行
df = pd.read_csv("data.csv",skiprows = [1,3,5,7])
  • nrows 用于指定读取的行数:
import pandas as pd

# 只读取前 1000 行
df = pd.read_csv("data.csv",nrows = 1000)
  • 同时使用 skiprows 和 nrows 参数就可以设置分批加载:
import pandas as pd

# 读取第 500 ~ 1000 行
df = pd.read_csv("data.csv", skiprows=500, nrows = 1000)

# 每次加载 50000 条数据
batch_size=50000
for i in range(batch_nums):
	df = pd.read_csv("data.csv", skiprows=i*batch_size, nrows = batch_size)

你可能感兴趣的:(#,Pandas,python,开发语言)