如何使用 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"))
输出:
示例 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'))
输出:
示例 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"))
输出: