使用CSV文件创建数据帧
在本技术文档中,我们将探讨在Python中使用CSV文件创建数据帧的过程。具体而言,我们将涵盖以下子部分−
- 数据帧和CSV文件介绍
-
将CSV文件读入数据帧
-
探索数据帧
-
操作数据帧
-
将数据帧写入CSV文件
在整个文档中,我们将使用真实世界的实例并提供代码片段来说明每个子部分。
什么是数据帧和CSV文件?
在深入介绍如何从CSV文件创建数据帧之前,我们首先定义数据帧和CSV文件是什么。
数据帧是一个二维的、参数可变的、表格型的数据结构,带有各种类型的列。它类似于电子表格或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
透视
要透视数据框,我们可以使用pivot_table
函数。例如,假设我们想通过类型查看电影的平均运行时间。我们可以透视原始电影数据框——
例子
pivot_df = pd.pivot_table(df, values='Runtime', columns='Genre', aggfunc='mean')
print(pivot_df)
输出
这将输出一个表格,显示按类型分类的电影的平均运行时间。
Genre 动作 冒险 动画 喜剧 犯罪 \
Runtime 126.304348 118.054054 98.250000 107.111111 128.666667
Genre 纪录片 剧情 家庭 奇幻 黑色电影 \
Runtime 85.333333 126.539326 111.666667 126.300000 105.000000
Genre 历史 恐怖 音乐 音乐剧 悬疑 \
Runtime 123.375 108.204545 131.133333 121.714286 114.200000
Genre 爱情 科幻 运动 惊悚 战争 西部
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文件的专家。