流处理,听起来很高大上啊,其实就是分块读取。有这么一些情况,有一个很大的几个G的文件,没办法一次处理,那么就分批次处理,一次处理1百万行,接着处理下1百万行,慢慢地总是能处理完的。
使用类似迭代器的方式
data=pd.read_csv(file, chunksize=1000000)for sub_df in data:
print('do something in sub_df here')
1234索引
Series和DataFrame都是有索引的,索引的好处是快速定位,在涉及到两个Series或DataFrame时可以根据索引自动对齐,比如日期自动对齐,这样可以省去很多事。
缺失值
pd.isnull(obj)obj.isnull()12将字典转成数据框,并赋予列名,索引
DataFrame(data, columns=['col1','col2','col3'...],
index = ['i1','i2','i3'...])
12查看列名
DataFrame.columns
查看索引
DataFrame.index
重建索引
obj.reindex(['a','b','c','d','e'...], fill_value=0]
按给出的索引顺序重新排序,而不是替换索引。如果索引没有值,就用0填充
就地修改索引
data.index=data.index.map(str.upper)12345列顺序重排(也是重建索引)
DataFrame.reindex[columns=['col1','col2','col3'...])`
也可以同时重建index和columns
DataFrame.reindex[index=['a','b','c'...],columns=['col1','col2','col3'...])12345重建索引的快捷键
DataFrame.ix[['a','b','c'...],['col1','col2','col3'...]]1重命名轴索引
data.rename(index=str.title,columns=str.upper)
修改某个索引和列名,可以通过传入字典
data.rename(index={'old_index':'new_index'},
columns={'old_col':'new_col'})
12345查看某一列
DataFrame['state'] 或 DataFrame.state1查看某一行
需要用到索引
DataFrame.ix['index_name']1添加或删除一列
DataFrame['new_col_name'] = 'char_or_number'
删除行
DataFrame.drop(['index1','index2'...])
删除列
DataFrame.drop(['col1','col2'...],axis=1)
或
del DataFrame['col1']1234567DataFrame选择子集
类型 说明obj[val] 选择一列或多列obj.ix[val] 选择一行或多行obj.ix[:,val] 选择一列或多列obj.ix[val1,val2] 同时选择行和列reindx 对行和列重新索引icol,irow 根据整数位置选取单列或单行get_value,set_value 根据行标签和列标签选择单个值针对series
obj[['a','b','c'...]]obj['b':'e']=512针对dataframe
选择多列
dataframe[['col1','col2'...]]
选择多行
dataframe[m:n]
条件筛选
dataframe[dataframe['col3'>5]]
选择子集
dataframe.ix[0:3,0:5]1234567891011dataframe和series的运算
会根据 index 和 columns 自动对齐然后进行运算,很方便啊
方法 说明add 加法sub 减法div 除法mul 乘法
没有数据的地方用0填充空值
df1.add(df2,fill_value=0)
dataframe 与 series 的运算
dataframe - series
规则是:
--------
v
指定轴方向
dataframe.sub(series,axis=0)规则是:-------- --- | | | | ----->| | | | | | | | | | | | -------- ---12345678910111213141516171819202122apply函数
f=lambda x:x.max()-x.min()
默认对每一列应用
dataframe.apply(f)
如果需要对每一行分组应用
dataframe.apply(f,axis=1)1234567排序和排名
默认根据index排序,axis = 1 则根据columns排序
dataframe.sort_index(axis=0, ascending=False)
根据值排序
datafr