第一章

原文:Chapter 1

译者:飞龙

协议:CC BY-NC-SA 4.0

  1. import pandas as pd
  2. pd.set_option('display.mpl_style', 'default') # 使图表漂亮一些
  3. figsize(15, 5)

1.1 从 CSV 文件中读取数据

您可以使用read_csv函数从CSV文件读取数据。 默认情况下,它假定字段以逗号分隔。

我们将从蒙特利尔(Montréal)寻找一些骑自行车的数据。 这是原始页面(法语),但它已经包含在此仓库中。 我们使用的是 2012 年的数据。

这个数据集是一个列表,蒙特利尔的 7 个不同的自行车道上每天有多少人。

  1. broken_df = pd.read_csv('../data/bikes.csv')
  2. In [3]:
  3. # 查看前三行
  4. broken_df[:3]
Date;Berri 1;Br?beuf (donn?es non disponibles);C?te-Sainte-Catherine;Maisonneuve 1;Maisonneuve 2;du Parc;Pierre-Dupuy;Rachel1;St-Urbain (donn?es non disponibles)
0 01/01/2012;35;;0;38;51;26;10;16;
1 02/01/2012;83;;1;68;153;53;6;43;
2 03/01/2012;135;;2;104;248;89;3;58;

你可以看到这完全损坏了。read_csv拥有一堆选项能够让我们修复它,在这里我们:

  • 将列分隔符改成;
  • 将编码改为latin1(默认为utf-8
  • 解析Date列中的日期
  • 告诉它我们的日期将日放在前面,而不是月
  • 将索引设置为Date
  1. fixed_df = pd.read_csv('../data/bikes.csv', sep=';', encoding='latin1', parse_dates=['Date'], dayfirst=True, index_col='Date')
  2. fixed_df[:3]
Berri 1 Brébeuf (données non disponibles) C?te-Sainte-Catherine Maisonneuve 1 Maisonneuve 2 du Parc Pierre-Dupuy Rachel1 St-Urbain (données non disponibles)
Date
2012-01-01 35 NaN 0 38 51 26 10 16 NaN
2012-01-02 83 NaN 1 68 153 53 6 43 NaN
2012-01-03 135 NaN 2 104 248 89 3 58 NaN

1.2 选择一列

当你读取 CSV 时,你会得到一种称为DataFrame的对象,它由行和列组成。 您从数据框架中获取列的方式与从字典中获取元素的方式相同。

这里有一个例子:

  1. fixed_df['Berri 1']
  1. Date
  2. 2012-01-01 35
  3. 2012-01-02 83
  4. 2012-01-03 135
  5. 2012-01-04 144
  6. 2012-01-05 197
  7. 2012-01-06 146
  8. 2012-01-07 98
  9. 2012-01-08 95
  10. 2012-01-09 244
  11. 2012-01-10 397
  12. 2012-01-11 273
  13. 2012-01-12 157
  14. 2012-01-13 75
  15. 2012-01-14 32
  16. 2012-01-15 54
  17. ...
  18. 2012-10-22 3650
  19. 2012-10-23 4177
  20. 2012-10-24 3744
  21. 2012-10-25 3735
  22. 2012-10-26 4290
  23. 2012-10-27 1857
  24. 2012-10-28 1310
  25. 2012-10-29 2919
  26. 2012-10-30 2887
  27. 2012-10-31 2634
  28. 2012-11-01 2405
  29. 2012-11-02 1582
  30. 2012-11-03 844
  31. 2012-11-04 966
  32. 2012-11-05 2247
  33. Name: Berri 1, Length: 310, dtype: int64

1.3 绘制一列

只需要在末尾添加.plot(),再容易不过了。

我们可以看到,没有什么意外,一月、二月和三月没有什么人骑自行车。

  1. fixed_df['Berri 1'].plot()
  1. <matplotlib.axes.AxesSubplot at 0x3ea1490>

第一章 - 图1

我们也可以很容易地绘制所有的列。 我们会让它更大一点。 你可以看到它挤在一起,但所有的自行车道基本表现相同 - 如果对骑自行车的人来说是一个糟糕的一天,任意地方都是糟糕的一天。

  1. fixed_df.plot(figsize=(15, 10))
  1. <matplotlib.axes.AxesSubplot at 0x3fc2110>

第一章 - 图2

1.4 将它们放到一起

下面是我们的所有代码,我们编写它来绘制图表:

  1. df = pd.read_csv('../data/bikes.csv', sep=';', encoding='latin1', parse_dates=['Date'], dayfirst=True, index_col='Date')
  2. df['Berri 1'].plot()
  1. <matplotlib.axes.AxesSubplot at 0x4751750>

第一章 - 图3