series import pandas as pd from pandas import Series,DataFrame
data=Series([4,7,-5,3]) data.values #以数组的形式呈现 data=Series([4,7,-5,3],index=["d","b","a","c"]) #自定义index data.index #查看index data["a"] #索引查询 data["a"]=5 #更改 data[data>0] #索引正值 np.exp(data) "b" in data #返回布尔值 data1 = Series(data) #字典转换成series data=Series(data,index=states) #states是一个包含index的list,若没有对应的,则NaN pd.isnull(data) #返回都是布尔值的series pd.notnull(data) data.isnull() data1+data2 #series在算数运算中会i懂对齐不同索引的数据 data.name="population" #设置series的名字 data.index.name="state" #索引也可以设定名字哦~~ data.index=["bob","steve","jeff"] #修改索引
DataFrame
frame=DataFrame(data) #字典转化为dataframe,key变列索引 frame=DataFrame(data,columns=["year","state","pop"],index=["one","two","three"]) #columns是列索引,index是行索引 frame.columns #查看列索引 frame.one frame["state"] frame.ix["three"] #`.ix`用于对行索引 frame["debt"]=16.5 #16.5覆盖debt列的所有值 frame["debt"]=np.arange(5) frame["eastern"] = frame.state=="ohio" #得到布尔值 frame=DateFrame(pop) #pop为嵌套字典,外层key为列索引,内层key为行索引 frame.T frame.index.name="year" frame.columns.name="state" frame.values #返回数组
重新索引
data=Series([4.5,7.2,-5.3,3.6],index=["d","b","a","c"]) data1=data.reindex(["a","b","c","d","e"]) #`.reindex`进行索引排序 data1=data.reindex(["a","b","c","d","e"],fill_value=0) #`fill_value=0`即NaN变为0 data.reindex(range(6),method="ffill") #缺失项,前向填充,若method="bfill",即为后项填充 frame=DataFrame(np.arange(9).reshape((3,3)),index=["a","c","d"],columns=["ohio","texas","california"]) frame.reindex(["a","b","c","d"]) frame.ix[["a","b","c","d"],states] #左行索引,右列索引
丢弃指定轴上的项
frame.drop("c") #丢弃行的一项,默认axis=0,丢弃列是,设置axis=1
frame["b":"c"] #!!!!!!利用标签的切片运算与普通的python切片运算不同,其末端是包含的。 data<0 #所有都返回布尔值 data1.add(data2,fill_value=0)
排序和排名
data.sort_index() #按索引排序,默认axis=0 data.sort_index(axis=1,ascending=False) #列索引按降序排序 data.order() #series按值排序,且缺失值会默认放句末 frame.sort_index(by="b") #按b列顺序 frame.sort_index(by=["b","a"]) frame.index.is_unique #索引是否唯一
汇总和计算描述统计
data.sum(axis=1,skipna=False) #skipana排除缺失值,默认为True data.idxmax() #索引最大值 df.cumsum() #累计加 df.describe() #显示数量、均值、方差、最小最大值、各分位数,非数值型数据返回:count、unique、top、freq data.corr() #相关系数 data.cov() #协方差 data.corrwith(data.IBM)
唯一值、值计数以及成员资格
data.unique() #显示series中的唯一值 data.value_counts() #series中各值出现频数,默认sort=True data.isin(["b","c"]) #series是否为b或c
滤除缺失数据
data.dropna() #默认丢弃任何含有缺失值的行 data.dropna(how="all") #how="all"表示只丢弃全为NA的那些行 df.ix[:4,1]=NA #`.ix`函数,若dataframe没有设定index,包含末端 df.fillna({1:0.5,3:-1}) df.fillna(0,inplace=True)
关联
res_detail = pd.merge(ori_res, gp_df, how='left', left_on='cid', right_on='cid')
数据透视表
res_stat = pd.pivot_table(res_detail, index=['CORP', 'aip_corp', 'update_dt'], aggfunc='sum', margins=False) res_stat = res_stat.reset_index()