Python 使用CSV文件创建Dataframe
在这篇技术文档中,我们将探讨如何使用Python中的CSV文件创建数据框(dataframe)的过程。具体来说,我们将涵盖以下几个子节:
- 数据框(dataframe)和CSV文件的简介
-
将CSV文件读取为数据框
-
探索数据框(dataframe)
-
操作数据框(dataframe)
-
将数据框写入CSV文件
在本文档中,我们将使用真实世界的例子,并提供代码片段来说明每个子节。
数据框(dataframe)和CSV文件是什么
在深入研究如何从CSV文件创建数据框之前,让我们首先定义一下数据框和CSV文件是什么。
数据框(dataframe)是一个二维的、可变大小的、表格化的数据结构,其列可以具有不同的类型。它类似于电子表格或SQL表格,并广泛被用于存储和操作Python中的数据。
而CSV(逗号分隔值)文件是一个纯文本文件,以表格化的格式存储数据,其中每一行表示一条记录,每一列表示一个字段。CSV文件是一种常见的存储数据的方式,因为它们易于读写,并且可以在许多不同的应用程序中打开,包括Excel和Python。
将CSV文件读取为数据框
从CSV文件创建数据框的第一步是将文件读入Python。这可以使用pandas
库来完成,该库提供了一种简单的方法来将CSV文件读取为数据框。
语法
import pandas as pd
df = pd.read_csv('filename.csv')
在这个例子中,我们首先导入pandas
库,然后使用pd.read_csv
函数读取名为filename.csv
的CSV文件。生成的对象df
是一个包含CSV文件中数据的数据帧。
值得注意的是,read_csv
函数有许多可选参数可以用于自定义CSV文件的读取方式。例如,您可以指定文件中使用的分隔符(如果不是逗号),编码方式以及文件是否包含标题行。
数据帧的探索
一旦我们将CSV文件读取为数据帧,我们就可以开始探索和分析数据。一些常见的操作包括−
- 使用
head
函数查看数据帧的前几行 -
使用
shape
属性检查数据帧的形状(行数和列数) -
使用
describe
函数查看数据帧的汇总统计信息 -
使用索引和切片选择列或行的子集
让我们看一个例子。假设我们有一个CSV文件,其中包含有关电影的信息,包括标题、年份、流派和时长。我们可以将文件读取为数据帧,然后使用head
函数查看前几行。
语法
df = pd.read_csv('movies.csv')
print(df.head())
这将输出数据框的前5行
输出
Title Year Genre Runtime
0 The Shawshank Redemption 1994 Drama 142
1 The Godfather 1972 Crime 175
2 The Godfather: Part II 1974 Crime 202
3 The Dark Knight 2008 Action 152
4 12 Angry Men 1957 Drama 96
我们还可以检查数据帧的形状
print(df.shape)
为了查看数据框的摘要统计信息,我们可以使用describe
函数−
print(df.describe())
这将输出以下内容:
输出
Year Runtime
count 250.000000 250.000000
mean 1984.356000 118.840000
std 24.012321 23.118059
min 1921.000000 69.000000
25% 1964.000000 100.000000
50% 1995.000000 116.000000
75% 2003.000000 131.000000
max 2016.000000 229.000000
最后,我们可以使用索引和切片来选择列或行的子集。例如,只选择标题和类型列:
示例
subset = df[['Title', 'Genre']]
print(subset.head())
输出
Title Genre
0 The Shawshank Redemption Drama
1 The Godfather Crime
2 The Godfather: Part II Crime
3 The Dark Knight Action
4 12 Angry Men Drama
操作数据框
除了简单地探索数据外,我们可能希望以各种方式对其进行操作,例如排序、过滤、合并和透视。在本小节中,我们将使用真实世界的例子来介绍一些常见的数据框操作。
排序
要按一个或多个列对数据框进行排序,我们可以使用sort_values
函数。例如,要按年份降序排序电影数据框-
示例
sorted_df = df.sort_values('Year', ascending=False)
print(sorted_df.head())
这将按年份降序的方式输出数据框的前5行 −
输出
Title Year Genre Runtime
15 Logan 2017 Action 137
127 The Revenant 2015 Adventure 156
117 Whiplash 2014 Drama 107
111 X-Men: Days of Future Past 2014 Action 132
95 The Lego Movie 2014 Animation 100
筛选
根据一个或多个条件筛选数据框,我们可以使用布尔索引。例如,要选择电影数据框中仅包含动作电影的数据:
示例
subset = df[df['Genre'] == 'Action']
print(subset.head())
这将输出数据帧中的前5部动作电影
输出
Title Year Genre Runtime
3 The Dark Knight 2008 Action 152
6 The Silence of the Lambs 1991 Action 118
7 Inception 2010 Action 148
16 Terminator 2: Judgment Day 1991 Action 137
20 Forrest Gump 1994 Action 142
合并
要将两个或多个数据框合并为一个数据框,可以使用merge
函数。例如,假设我们有一个第二个CSV文件,其中包含原始数据框中每个电影的评分。我们可以将该文件读取为一个单独的数据框,然后根据一个公共列(在本例中是电影的标题)将其与原始数据框合并-
示例
ratings_df = pd.read_csv('ratings.csv')
merged_df = pd.merge(df, ratings_df, on='Title')
print(merged_df.head())
这将输出合并后的数据框,其中包含电影信息和评分信息。
输出
Title Year Genre Runtime Rating
0 The Shawshank Redemption 1994 Drama 142 9.3
1 The Godfather 1972 Crime 175 9.2
2 The Godfather: Part II 1974 Crime 202 9.0
3 The Dark Knight 2008 Action 152 9.0
4 12 Angry Men 1957 Drama 96 8.9
旋转
要旋转dataframe,我们可以使用pivot_table
函数。例如,假设我们想按流派查看电影的平均运行时间。我们可以旋转我们原始的电影dataframe −
示例
pivot_df = pd.pivot_table(df, values='Runtime', columns='Genre', aggfunc='mean')
print(pivot_df)
输出
这将输出一个表格,显示电影按类型的平均运行时间。
Genre Action Adventure Animation Comedy Crime \
Runtime 126.304348 118.054054 98.250000 107.111111 128.666667
Genre Documentary Drama Family Fantasy Film-Noir \
Runtime 85.333333 126.539326 111.666667 126.300000 105.000000
Genre History Horror Music Musical Mystery \
Runtime 123.375 108.204545 131.133333 121.714286 114.200000
Genre Romance Sci-Fi Sport Thriller War Western
Runtime 116.6 121.266667 129.428571 120.046875 134.125 117.833333
将数据框写入CSV文件
最后,在我们操作和分析数据框之后,可能希望将其写回CSV文件以供将来使用。可以使用to_csv
函数来实现。
df.to_csv('new_file.csv', index=False)
在这个示例中,我们将我们的数据帧写入一个名为new_file.csv
的新CSV文件中,通过设置index=False
来排除文件中的索引列。
结论
在这个技术文档中,我们讨论了使用Python中的CSV文件创建数据帧的过程。我们首先定义了数据帧和CSV文件是什么,然后探讨了如何将CSV文件读入数据帧,如何探索和操作数据帧,以及如何将数据帧写回CSV文件。我们使用真实世界的示例和代码片段详细说明了每个子部分。通过掌握这个文档中涵盖的技术,您将成为精通使用Python处理数据帧和CSV文件的专家。