Python Pandas Learn by Q&A

学习python pandas库的最佳方法是通过解决一个个问题学习

How to read a tabular data file into pandas

将表格型数据文件(excel, csv…)读入pandas十分简单
因为大家没有现成的数据文件,我们用一个URL代替,没错,pandas.read_table可以传入一个URL, 确认你可以访问到这个地址,大陆需要自备梯子

1
2
import pandas as pd
pd.read_table('http://bit.ly/chiporders')

read_table默认数据是用tab分割的,如果数据使用其它符号分割(比如’|’)

1
2
3
import pandas as pd
user_headers = ['use_id','age','gender','occupation','zip_code']
pd.read_table('http://bit.ly/movieusers', sep='|', header=None, names=user_headers)

在上面这个代码片段中我们从http://bit.ly/movieusers这个URL导入了数据,但是数据是用’|’分割的,因此我们要声明seperator:sep='|', header=None, names=user_headers则告诉python第一行的数据不是header,将其忽略并换上自定义的header user_headers
read_tables有大量的控制参数,可以参考官网的定义

How to select a pandas series from a DataFrame

实验代码:这个URL记录了历史上目击UFO的相关数据

1
2
3
4
5
6
7
8
9
10
11
import pandas as pd
ufo = pd.read_csv('http://bit.ly/uforeports')
type(ufo)

ufo.head()
ufo['City']
type(ufo['City'])

ufo.City

ufo['Location'] = ufo.City + ', ' + ufo.State

read_csv函数与read_table几乎一样,唯一一点不同的是read_csv使用,作为默认seperator
ufo.head() 显示ufo数据的前5行
pandas会自动将frame的series转换成frame的方法,因此ufo['City'] == ufo.City,但是方法有一些局限性
ufo['Location'] = ufo.City + ', ' + ufo.State: 创建一个新的series location, 是原来两个series的组合