Pandas dataframe to_csv – 分割成多个输出文件

Pandas dataframe to_csv – 分割成多个输出文件

在本文中,我们将介绍如何使用Pandas的to_csv函数将DataFrame对象分割成多个输出文件。这在处理大型数据集时非常有用,可以帮助我们更好地控制数据的存储和处理。

阅读更多:Pandas 教程

to_csv函数的基本使用

我们先来了解一下to_csv函数的基本使用。to_csv函数用于将DataFrame对象输出到CSV文件中。常用的参数包括文件名、分隔符、编码方式等。以下是to_csv函数的基本使用方法:

import pandas as pd

data = {
    'name': ['Tom', 'Jerry', 'Mickey', 'Puppy'],
    'age': [10, 20, 30, 40],
    'score': [90, 80, 70, 60]
}

df = pd.DataFrame(data)
df.to_csv('output.csv', index=False)
Python

这段代码将DataFrame对象输出到了名为output.csv的文件中,我们可以打开查看一下输出内容:

name,age,score
Tom,10,90
Jerry,20,80
Mickey,30,70
Puppy,40,60
Python

可以看到,文件中包含了DataFrame的所有数据,以逗号分隔。可以使用读取CSV文件的方式读取这个文件。

按行数分隔

现在,我们来介绍一种按行数分隔的方法。假设我们的数据集很大,无法一次将所有数据保存在一个文件中,我们可以将数据集分割成多个小文件进行存储。以下是按行数分隔的示例代码:

import pandas as pd
import math

data = {
    'name': ['Tom', 'Jerry', 'Mickey', 'Puppy', 'Kitty', 'Lily'],
    'age': [10, 20, 30, 40, 15, 25],
    'score': [90, 80, 70, 60, 85, 75]
}

df = pd.DataFrame(data)

# 定义每个文件最多包含3行数据
chunk_size = 3
num_chunks = math.ceil(len(df) / chunk_size)

for i, chunk in enumerate(np.array_split(df, num_chunks)):
    filename = f"output_{i}.csv"
    chunk.to_csv(filename, index=False)
Python

这段代码将DataFrame对象分割成了2个文件:output_0.csv和output_1.csv。每个文件最多包含3行数据,我们可以打开这两个文件看一下输出内容:

output_0.csv:

name,age,score
Tom,10,90
Jerry,20,80
Mickey,30,70
Python

output_1.csv:

name,age,score
Puppy,40,60
Kitty,15,85
Lily,25,75
Python

可以看到,文件中包含了DataFrame的部分数据,但是每个文件的行数是我们指定的最大行数,即3行。

按值分割

除了按行数分割,我们还可以按值分割。比如,我们想按照年龄把数据集分割成多个文件,每个文件包含一个年龄段的数据。以下是按值分割的示例代码:

import pandas as pd

data = {
    'name': ['Tom', 'Jerry', 'Mickey', 'Puppy', 'Kitty', 'Lily'],
    'age': [10, 20, 30, 40, 15, 25],
    'score': [90, 80, 70, 60, 85, 75]
}

df = pd.DataFrame(data)

# 定义年龄段
bins = [0, 20, 30, 50]

# 按年龄段分割数据集
groups = df.groupby(pd.cut(df['age'], bins))

for i, (name, group) in enumerate(groups):
    filename = f"output_{i}.csv"
    group.to_csv(filename, index=False)
Python

这段代码将DataFrame对象分割成了3个文件:output_0.csv、output_1.csv和output_2.csv。每个文件包含了一个年龄段的数据,例如,output_0.csv包含了年龄小于等于20岁的数据,output_1.csv包含了年龄在20岁和30岁之间的数据,output_2.csv包含了年龄大于30岁的数据。我们可以打开这三个文件看一下输出内容:

output_0.csv:

name,age,score
Tom,10,90
Jerry,20,80
Kitty,15,85
Python

output_1.csv:

name,age,score
Mickey,30,70
Lily,25,75
Python

output_2.csv:

name,age,score
Puppy,40,60
Python

可以看到,文件中包含了DataFrame的部分数据,但是每个文件的数据都是按照年龄段进行了分割。

按列值分割

除了按行数和值分割,我们还可以按照列值进行分割。比如,我们想按照score列的值将数据集分割成多个文件,每个文件包含一个分数段的数据。以下是按列值分割的示例代码:

import pandas as pd

data = {
    'name': ['Tom', 'Jerry', 'Mickey', 'Puppy', 'Kitty', 'Lily'],
    'age': [10, 20, 30, 40, 15, 25],
    'score': [90, 80, 70, 60, 85, 75]
}

df = pd.DataFrame(data)

# 定义分数段
bins = [0, 70, 80, 90]

# 按分数段分割数据集
groups = df.groupby(pd.cut(df['score'], bins, right=False))

for i, (name, group) in enumerate(groups):
    filename = f"output_{i}.csv"
    group.to_csv(filename, index=False)
Python

这段代码将DataFrame对象分割成了3个文件:output_0.csv、output_1.csv和output_2.csv。每个文件包含了一个分数段的数据,例如,output_0.csv包含了分数小于70的数据,output_1.csv包含了分数在70和80之间(包括70和80)的数据,output_2.csv包含了分数大于80的数据。我们可以打开这三个文件看一下输出内容:

output_0.csv:

name,age,score
Puppy,40,60
Python

output_1.csv:

name,age,score
Jerry,20,80
Lily,25,75
Python

output_2.csv:

name,age,score
Tom,10,90
Mickey,30,70
Kitty,15,85
Python

可以看到,文件中包含了DataFrame的部分数据,但是每个文件的数据都是按照分数段进行了分割。

总结

本文介绍了如何使用Pandas的to_csv函数将DataFrame对象分割成多个输出文件。我们可以按照行数、值或列值对数据集进行分割,并将分割后的数据保存到多个输出文件中,这样可以帮助我们更好地控制数据的存储和处理。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册