pandas - cookbook 第一章 读取数据

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()

我们可以看到,不出所料,一月、二月、三月,没多少人骑车。

plot-01.jpg

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

fixed_df.plot(figsize=(15, 10))
plot.show()
plot-02.jpg

1.4 将他们合在一起

下面是我们需要将读写画图写在一行

df = pd.read_csv('bikes.csv', sep=';', encoding='latin1', parse_dates=['Date'], dayfirst=True, index_col='Date')
df['Berri 1'].plot()
plot-03.jpg

参考资料

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容