一. 载入数据到Pandas
- 索引:将一个列或多个列读取出来构成 DataFrame,其中涉及是否从文件中读取索引以及列名
- 类型推断和数据转换:包括用户自定义的转换以及缺失值标记
- 日期解析
- 迭代:针对大文件进行逐块迭代。这个是Pandas和Python原生的csv库的最大区别
- 不规整数据问题:跳过一些行,或注释等等
索引及列名
df = pd.read_csv('data/ex1.csv')
df = pd.read_csv('data/ex1.csv', sep=',')
##列名缺失
pd.read_csv('data/ex2.csv', header=None)
# 指定列名
pd.read_csv('data/ex2.csv', header=None, names=['a', 'b', 'c', 'd', 'msg'])
# 指定行索引
pd.read_csv('data/ex2.csv', header=None, names=['a', 'b', 'c', 'd', 'msg'], index_col='msg')
# 多层行索引
pd.read_csv('data/ex2.csv', header=None, names=['a', 'b', 'c', 'd', 'msg'], index_col=['msg', 'a'])
处理不规则的分隔符
# 正则表达式
pd.read_table('data/ex3.csv', sep='\s+')
缺失值处理
pd.read_csv('data/ex5.csv', na_values=['NA', 'NULL', 'foo'])
pd.read_csv('data/ex5.csv', na_values={
'message': ['foo', 'NA'], 'something': ['two']})
逐块读取数据
pd.read_csv('data/ex6.csv', nrows=10)
# 统计每个 key 出现的次数
tr = pd.read_csv('data/ex6.csv', chunksize=1000)
key_count = pd.Series([])
for pieces in tr:
key_count = key_count.add(pieces['key'].value_counts(), fill_value=0)
key_count = key_count.sort_values(ascending=False)
key_count[:10]
保存数据到磁盘
df = pd.read_csv('data/ex5.csv')
df.to_csv('data/ex5_out.csv'