声明:
- 本文是系列课程的第二课
- 本文是对机器学习网站课程的翻译
- 尊重原作者,尊重知识分享
下载序列数据集
要使用的Python第三方库:Pandas
通过本文,你可以学到:
- 如何使用pandas读取一个csv文件。
- 如何查看加载的数据,如何计算数据的统计量。
- 如何可视化时间序列
Daily Female Births Dataset
数据集:Daily Female Births Dataset
这是一个单变量的时间序列,描述了加州1959年每天(共365天)出生的女性人数。数据集如下所示:
"Date","Daily total female births in California, 1959"
"1959-01-01",35
"1959-01-02",32
"1959-01-03",30
"1959-01-04",31
"1959-01-05",44
该时间序列的折线图如下所示:

加载时间序列
pandas中用Series
加载和保存序列。
# Load birth data
from pandas import Series
series = Series.from_csv('daily-total-female-births-in-cal.csv', header=0)
print(series.head())
运行结果是显示序列前5行的信息:
Date
1959-01-01 35
1959-01-02 32
1959-01-03 30
1959-01-04 31
1959-01-05 44
Name: Daily total female births in California, 1959, dtype: int64
series
表示时间序列,即一列数据,它的名字就是列名,在本例中是Date
。但它似乎不止一列数据,在每一行的前一个数据是日期和时间,实际上是series
的索引。
pandas中的另一个类——DataFrame
可以加载和处理列表。
DataFrame
与Series
不同之处在于其一个索引可以有多个列的值。Series
可以看做是列表的特例——单列数据。
import pandas as pd
series = pd.read_csv('daily-total-female-births-in-cal.csv', header=0, parse_dates=[0], index_col=0, squeeze=True)
print(type(df))
print(series.head())
read_csv()
中参数的意义:
- header=0: 文件第一行作为列名
- parse_dates=[0]: 解析第一列的日期,将其转化成标准时间类型
index_col=0: 文件的第一列作为索引
squeeze=True: 若读取后的文件只有一列,则转化为series
;否则转化为dataframe
.
另一个在实践中可能会用到的参数是date_parser
,用于传入处理日期字符串。如果不调用的话则默认用pd.to_datetime()
该代码的输出与之前的例子输出相同:
<class 'pandas.core.series.Series'>
Date
1959-01-01 35
1959-01-02 32
1959-01-03 30
1959-01-04 31
1959-01-05 44
Name: Daily total female births in California, 1959, dtype: int64
一般来说,用dataframe
来处理数据比series
更容易,它们之间的转化很简单:dataframe = DataFrame(series)
更多关于read_csv
的介绍:
查看时间序列
如前所述,可以用head()
查看dataframe
或series
前n(默认为5)行的值。
还有一些好用的查看数据的方法(以series
为例,dataframe
同用:
- series.size: 查看数据量
- series[‘1959-01’]: 查看1959年1月的数据
- series.describe(): 查看7个统计量,分别是:平均值、标准差、最小值、下分位点、中分位点、上分位点和最大值。
作图
from pandas import Series
from matplotlib import pyplot
series = Series.from_csv('daily-total-female-births-in-cal.csv', header=0)
pyplot.plot(series)
pyplot.show()

更多关于pandas中的绘图函数可见我的另一篇博客:
pandas中的绘图函数