如何使用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)
输出:
从现有的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)
输出:
方法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"))
输出:
Male.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'))
输出:
所有九个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"))
输出:
方法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"))
输出: