pandas :
get_dummies 使用:
1.
df = pd.DataFrame([['green','m','10.1','class1'],['red','l','13.5','class2'],['blue','xl','15.3','class1']])
>> > size_mapping={'xl':3,'l':2,'m':'1'}
>>> df['size']=df['size'].map(size_mapping)
>>> class_mapping ={label:idx for idx,label in enumerate(set(df['class label']))}
>>> df['class label']=df['class label'].map(class_mapping)
>>> pd.get_dummies(df)
2 .
pandas 使用 :
>>> dates = pd.date_range('20130101',periods=6)
>>> d= np.random.randn(6,4)
>>> df = pd.DataFrame(d,index=dates,columns=list('ABCD'))
1 df['E'] = np.where(df['D'] >= 0, '>=0', '<0') 2 df['F'] = np.random.randint(0, 2, 6) 3 df.assign(G = df.A * df.D) # 或者 4 df['F'] = df['F'].apply(str) #针对单列的 5 df.applymap(str) #这个相当于是mutate_each
1 pd.value_counts(df["E"])
2 pd.pivot_table(df,index=['E','F'])
1 df.index
2 df.set_index(['A'], drop = 0, append = 1) # 把已有的列设置为index,可保留之前的index,也可以把新的index在原数据中删除
3 df['dates'] = df.index # 新生成一列dates
4 df.reset_index(level=0, inplace=True) # 同上
5 df.reset_index(level=['index']) # 同上
1 df = df.drop('index', axis = 1) # 可以删除多列
2 df.drop(df.index[[1,3]])
1 df.columns
2 df.columns = ['a', 'b', 'c', 'e', 'd', 'f'] # 重命名
3 df.rename(columns = {'A':'aa','B':'bb', 'C':'cc', 'D':'dd', 'E':'ee', 'F':'ff'}, inplace=True)
4 df.rename(columns=lambda x: x[1:].upper(), inplace=True) # 也可以用函数 inplace参数的意思就是代替原来的变量,深拷贝
1 pd.Series(['a|b', np.nan, 'a|c']).str.get_dummies()
1 df.values
2 df.get_values()
1 df.describe() # 只会针对数值型变量做计算
1 df2=pd.DataFrame([[5,6],[7,8]],columns=list('AB'))
2 df.append(df2, ignore_index=True)
1 df.groupby(['E','F']).mean()
2 df.groupby(['E','F']).agg(['sum', 'mean'])
3 pd.pivot_table(df,index=['E','F'], aggfunc=[np.sum, np.mean])
4 df.pivot_table(index=['E','F'], aggfunc=[np.sum, np.mean]) # 同上
5 df.groupby(['E','F']).agg({'A':['mean','sum'], 'B':'min'}) # groupby 也可以这样写
1 df.sort(['A','B'],ascending=[1,0]) # 按列排序,na_position控制NAN的位置
2 df.sort_index(ascending=0) # 按index排序
1 df[(df.A >= -1) & (df.B <= 0)] # 值筛选
2 df[df.E.str.contains(">")] # 包含某个字符,contains筛选的其实是正则表达式
3 df[df.F.isin(['1'])] # 在列表内
1 df['A'] # 单个的列
2 df[0:3] # 行
3 df['20130102':'20130104'] # 按index筛选
4 df.loc[:,] # 类似于R里面的dataframe选行和列的方法
5 df.iloc[:,] # iloc只能用数字了
3 : list 压平嵌套
一层嵌套压平:
>>> l=[[1,2],[3,4],[5,6]]
>>> a = [j for i in l for j in i ]
>>> [o.extend(i) for i in l]
多层嵌套压平:
>>> from Tkinter import _flatten
>>> l = reduce(lambda *x:list(x),range(2,6),[1])
>>> _flatten(l)
4. list 变成dict ,然后变成矩阵
>>> n = [[[1, 2], 3], [[4, 5], 6], [[7, 8], 9]]
>>> d = {}
>>> for i in n :
... m={}
... m[i[0][1]]=i[1]
... d[i[0][0]]=m
>>> d
{1: {2: 3}, 4: {5: 6}, 7: {8: 9}}
>>> f =pd.DataFrame(d)
>>> f
1 4 7
2 3.0 NaN NaN
5 NaN 6.0 NaN
8 NaN NaN 9.0
# 填充为0
# 制定列填充
>>> f.fillna({1:0,4:0})
1 4 7
2 3.0 0.0 NaN
5 0.0 6.0 NaN
8 0.0 0.0 9.0
#全部填充
>>> d= f.fillna(0)
//获取列名,获取行名
d.columns()
d.index()