11.3工作笔记

 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()


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值