pandas 操作mysql_pandas 操作数据库

流处理,听起来很高大上啊,其实就是分块读取。有这么一些情况,有一个很大的几个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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值