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

📅  最后修改于: 2022-05-13 01:55:04.044000             🧑  作者: Mango

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

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

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

Python3
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)


Python3
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)


Python3
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"))


Python3
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'))


Python3
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"))


Python3
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"))


输出:



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

为了完成我们的工作,我们将讨论以下不同的方法:

方法一:按行拆分

在这种方法中,我们将根据行将一个 CSV 文件拆分为多个 CSV。

蟒蛇3

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)

输出:

方法二:按列拆分

示例 1:

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

蟒蛇3



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"))

输出:

男性.csv

女性.csv

示例 2:

我们可以对两个以上的列进行分组,并且可以根据来自两个 Columns 值的唯一值的组合创建多个文件。以性别和年收入栏为例。

蟒蛇3

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'))

输出:

所有九个 CSV 文件

示例 3:

我们将根据特定列名称 Gender 对其值(男性和女性)进行过滤。然后在 Pandas 中使用 to_csv 将其转换为 CSV 文件。

蟒蛇3

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"))

输出:



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

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

蟒蛇3

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"))

输出: