pandas - cookbook 第一章 读取数据
以下内容翻译自 https://github.com/jvns/pandas-cookbook
import pandas as pd
pd.set_option('display.mpl_style', 'default') # Make the graphs a bit prettier
figsize(15, 5)
# 前两步有错误,目前不知为何
1.1 读取 csv 文件
你可以使用 pandas.read_csv 函数来读取csv文件,默认情况下,函数是以逗号分隔字段的。
我们来看一些来自蒙特雷阿(Montréal)的骑行者数据,这里是源网站(位于法国),但是它已经包含在这个项目中了。我们使用2012年的数据。(可以点击原网站进行下载,或者直接去githubs下载数据)
这个数据集列出了蒙特利尔每天有多少人在7条不同的自行车道上。
import pandas as pd
broken_df = pd.read_csv("biks.csv")
print(broken_df[:3])
你将看到一坨乱糟糟的数据,或者发生编码异常,read_csv
有一些选项可以让我们弄好它
- 修改列分隔符为一个分号
;
- 设置编码格式为 latin1,默认是 utf8
- 转换dates 到 "Date" 列
- 告诉他我们的时期是第一列而不是月
- 设置索引为 'Date' 列
fixed_df = pd.read_csv('bikes.csv', sep=';', encoding='latin1', parse_dates=['Date'], dayfirst=True, index_col='Date')
print(fixed_df[:3])
1.2 选择一列
当你读取csv文件时,你得到了一个 DataFrame 对象,它由行和列组成。从 DataFrame 中得到一列,就像是在字典中获取一个元素一样。
下面是一个例子:
print(fixed_df['Berri 1'])
Date
2012-01-01 35
2012-01-02 83
2012-01-03 135
2012-01-04 144
2012-01-05 197
2012-01-06 146
2012-01-07 98
2012-01-08 95
2012-01-09 244
2012-01-10 397
2012-01-11 273
2012-01-12 157
2012-01-13 75
2012-01-14 32
2012-01-15 54
2012-01-16 168
2012-01-17 155
2012-01-18 139
2012-01-19 191
2012-01-20 161
2012-01-21 53
2012-01-22 71
2012-01-23 210
2012-01-24 299
2012-01-25 334
2012-01-26 306
2012-01-27 91
2012-01-28 80
2012-01-29 87
2012-01-30 219
...
2012-10-07 1580
2012-10-08 1854
2012-10-09 4787
2012-10-10 3115
2012-10-11 3746
2012-10-12 3169
2012-10-13 1783
2012-10-14 587
2012-10-15 3292
2012-10-16 3739
2012-10-17 4098
2012-10-18 4671
2012-10-19 1313
2012-10-20 2011
2012-10-21 1277
2012-10-22 3650
2012-10-23 4177
2012-10-24 3744
2012-10-25 3735
2012-10-26 4290
2012-10-27 1857
2012-10-28 1310
2012-10-29 2919
2012-10-30 2887
2012-10-31 2634
2012-11-01 2405
2012-11-02 1582
2012-11-03 844
2012-11-04 966
2012-11-05 2247
Name: Berri 1, Length: 310, dtype: int64
1.3 绘制一列
只需添加 .plot() 在它后面,怎么能这么简单呢?哈哈,
fixed_df['Berri 1'].plot()
注:这样可能无法正常显示,需要加入 plot.show(),所以完整的源码应该如下
import pandas as pd
import matplotlib.pyplot as plot
fixed_df = pd.read_csv('bikes.csv', sep=';', encoding='latin1', parse_dates=['Date'], dayfirst=True, index_col='Date')
fixed_df['Berri 1'].plot()
plot.show()
我们可以看到,不出所料,一月、二月、三月,没多少人骑车。

同样的,我们可以简单的画出所有列。我们可以画的大一点,你可以看到他们挤在一起了,但是行为是出奇的一致,如果这一天不易于骑行,那么所有地方都不易。
fixed_df.plot(figsize=(15, 10))
plot.show()

1.4 将他们合在一起
下面是我们需要将读写画图写在一行
df = pd.read_csv('bikes.csv', sep=';', encoding='latin1', parse_dates=['Date'], dayfirst=True, index_col='Date')
df['Berri 1'].plot()

网友评论