Python 使用CSV文件创建Dataframe

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文件的专家。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程