使用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文件数据的DataFrame。
值得注意的是,`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 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文件。
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP