开始入门
要使用pandas库,通常从以下这行代码开始。
import pandas as pd
创建数据
pandas 中有两个核心对象:DataFrame(数据框)和 Series(系列)。
DataFrame
-
DataFrame
是一个表格。它包含一个单独条目的数组,每个条目都有特定的值。每个条目对应一行(或一条记录)和一列。pd.DataFrame({'Yes': [50, 21], 'No': [131, 2]})
输出如下:
在这个例子中,“0, No”条目的值为 131。“0, Yes”条目的值为 50,依此类推。 -
DataFrame
的条目不限于整数。例如,这里有一个DataFrame,其值为字符串:pd.DataFrame({'Bob': ['I liked it.', 'It was awful.'], 'Sue': ['Pretty good.', 'Bland.']})
输出如下:
我们使用pd.DataFrame()
构造函数来生成这些DataFrame
对象。声明对象的语法是字典,其键是列名(本例中为Bob和Sue),其值是条目列表。这是构造DataFrame的标准方法,也是最有可能遇到的方法。 -
字典列表构造函数为列标签赋值,但只对行标签使用从0(0,1,2,3,…)开始的升序计数。有 时这是可以的,但通常我们希望自己分配这些标签。
在
DataFrame()
中使用的行标签列表被称为索引。我们可以在构造函数中使用索引参数为其分配值:pd.DataFrame({'Bob': ['I liked it.', 'It was awful.'], 'Sue': ['Pretty good.', 'Bland.']}, index=['Product A', 'Product B'])
输出如下:
Series
-
与之相反,
Series
是一系列数据值。如果说DataFrame
是一个表格,那么Series
就是一个列表。实际上,仅用一个列表就可以创建一个Series
。pd.Series([1, 2, 3, 4, 5])
输出如下:
-
Series
本质上是DataFrame
的单个列。因此,可以像以前一样使用index
参数为Series
分配行标签。但是,Series
没有列名,它只有一个整体名称:pd.Series([30, 35, 40], index=['2015 Sales', '2016 Sales', '2017 Sales'], name='Product A')
输出如下:
-
Series
和DataFrame
密切相关。将DataFrame
想象成实际上只是一堆 “粘在一起” 的Series
是很有帮助的。
读取数据文件
-
能够手动创建数据框或序列很方便。但是,在大多数情况下,我们实际上不会手动创建自己的数据。相反,我们将处理已经存在的数据。
-
数据可以以多种不同的形式和格式存储。其中最基本的当属
CSV
文件。当你打开一个CSV
文件时,会看到如下内容:
一个CSV
文件是由逗号分隔的值组成的表格。因此得名:"Comma-Separated Values",即CSV
。 -
我们将使用
pd.read_csv ()
函数将数据读入数据框。具体如下:wine_reviews = pd.read_csv("../input/wine-reviews/winemag-data-130k-v2.csv")
-
我们可以使用
shape
属性来检查生成的DataFrame
的大小。wine_reviews.shape
所以我们的
DataFrame
有 130000 条记录分布在 14 个不同的列中。那几乎是 200 万个条目! -
我们可以使用
head()
命令检查结果数据框的内容,该命令会抓取前五行。wine_reviews.head()
-
pd.read_csv()
函数功能强大,可以指定30多个可选参数。例如,您可以在这个数据集中看到CSV文件有一个内置索引,pandas
没有自动获取该索引。要使pandas
使用该列作为索引(而不是从头开始创建一个新列),我们可以指定一个index_col
。wine_reviews = pd.read_csv("../input/wine-reviews/winemag-data-130k-v2.csv", index_col=0) wine_reviews.head()
-