如何使用Pandas从现有的CSV文件创建多个CSV文件

如何使用Pandas从现有的CSV文件创建多个CSV文件

在这篇文章中,我们将学习如何使用Pandas从现有的CSV文件创建多个CSV文件。当我们的代码进入生产时,我们需要处理编辑数据文件的问题。由于数据文件很大,我们会遇到更多的问题,所以我们根据一些标准把这个文件分成一些小文件,比如分成行、列、列的特定值等等。

首先,让我们创建一个简单的CSV文件,并在文章下面的所有例子中使用它。使用pandas的dataframe方法创建数据集,然后将其保存到 “Customs.csv “文件中,或者我们可以使用Pandas的read_csv()函数加载现有数据集。

import pandas as pd
 
# initialise data dictionary.
data_dict = {'CustomerID': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
              
             'Gender': ["Male", "Female", "Female", "Male",
                        "Male", "Female", "Male", "Male",
                        "Female", "Male"],
              
             'Age': [20, 21, 19, 18, 25, 26, 32, 41, 20, 19],
              
             'Annual Income(k$)': [10, 20, 30, 10, 25, 60, 70,
                                   15, 21, 22],
              
             'Spending Score': [30, 50, 48, 84, 90, 65, 32, 46,
                                12, 56]}
 
# Create DataFrame
data = pd.DataFrame(data_dict)
 
# Write to CSV file
data.to_csv("Customers.csv")
 
# Print the output.
print(data)

输出:

如何使用Pandas从现有的CSV文件创建多个CSV文件?

从现有的CSV文件创建多个CSV文件

为了完成我们的工作,我们将讨论不同的方法,具体如下。

方法1:基于行的拆分

在这个方法中,我们将根据行数把一个CSV文件分成多个CSV。

import pandas as pd
 
# read DataFrame
data = pd.read_csv("Customers.csv")
 
# no of csv files with row size
k = 2
size = 5
 
for i in range(k):
    df = data[size*i:size*(i+1)]
    df.to_csv(f'Customers_{i+1}.csv', index=False)
 
df_1 = pd.read_csv("Customers_1.csv")
print(df_1)
 
df_2 = pd.read_csv("Customers_2.csv")
print(df_2)

输出:

如何使用Pandas从现有的CSV文件创建多个CSV文件?

方法2:基于列的拆分

示例 1:

使用Pandas的groupby()方法,我们可以创建多个CSV文件。要创建一个文件,我们可以使用Pandas的to_csv()方法。这里根据性别列的 “男 “和 “女 “值创建了两个文件。

import pandas as pd
 
# read DataFrame
data = pd.read_csv("Customers.csv")
 
for (gender), group in data.groupby(['Gender']):
     group.to_csv(f'{gender}.csv', index=False)
 
print(pd.read_csv("Male.csv"))
print(pd.read_csv("Female.csv"))

输出:

如何使用Pandas从现有的CSV文件创建多个CSV文件?

Male.csv

如何使用Pandas从现有的CSV文件创建多个CSV文件?

Female.csv

示例 2:

我们可以对两个以上的列进行分组,并可以在两个列值的独特值的组合基础上创建多个文件。以性别和年收入列为例。

import pandas as pd
 
# read DataFrame
data = pd.read_csv("Customers.csv")
 
for (Gender, Income), group in data.groupby(['Gender', 'Annual Income(k$)']):
    group.to_csv(f'{Gender} {Income}.csv', index=False)
    print(pd.read_csv(f'{Gender} {Income}.csv'))

输出:

如何使用Pandas从现有的CSV文件创建多个CSV文件?

所有九个CSV文件

示例 3:

我们将根据特定的列名Gender来过滤其值(男性和女性)。然后使用pandas中的to_csv将其转换为CSV文件。

import pandas as pd
 
# read DataFrame
data = pd.read_csv("Customers.csv")
 
male = data[data['Gender'] == 'Male']
female = data[data['Gender'] == 'Female']
 
male.to_csv('Gender_male.csv', index=False)
female.to_csv('Gender_female.csv', index=False)
 
print(pd.read_csv("Gender_male.csv"))
print(pd.read_csv("Gender_female.csv"))

输出:

如何使用Pandas从现有的CSV文件创建多个CSV文件?

方法3:同时基于行和列进行分割

使用Pandas的groupby()方法,我们可以按行创建多个CSV文件。要创建一个文件,我们可以使用Pandas的to_csv()方法。这里创建了两个文件,都是基于支出分数的特定性别列的行值 “男性 “和 “女性 “的值。

for (gender), group in data['Spending Score'].groupby(data['Gender']):
    group.to_csv(f'{gender}Score.csv', index=False)
     
print(pd.read_csv("MaleScore.csv"))
print(pd.read_csv("FemaleScore.csv"))

输出:

如何使用Pandas从现有的CSV文件创建多个CSV文件?

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程