利用python进行数据分析学习笔记(八)

数据规整:连接、联合与重塑

后续笔记内容以书本的内容+自身理解的知识进行注释标注记录

# 多次索引
df.index.names = ['key1', 'key2']
df.columns.names = ['state', 'color']
# names 名称属性,多层名称
# 交换层级索引
df.swaplevel('key1', 'key2')  # 交换索引
df.sort_index(level=1)        # 层级排序  0,1,2
df.swaplevel('key1', 'key2').sort_index(level=0)  # 交换+排序
df.sum(level='key1')      # 轴上聚合
df.sum(level='color', axis=1)
# DataFrame  列变行索引 - 行索引变列
df.set_index(['c', 'd'], drop=False) # 建立行索引 drop=Flase 保留列
df.reset_index()                     # 解除行索引
# DataFrame 连接
pd.merge(df1, df2, on=['key1', 'key2'], how='left') # merge 类似数据库连接,on=[] 连接多个键, how='left' 默认inner
pd.merge(df1, df2, left_on='key1', right='key2', suffixes=('_left', '_right'))
# left_on right_on 连接键, suffixes 相同列名后缀
pd.merge(df1, df2, left_index=True,righ_index=True) # 也可left_on 和 right_index 索引连接

```python
df1 = pd.DataFrame(np.random.randn(2),index=['a','b'],columns=['one'])
df2 = pd.DataFrame(np.random.randn(2),index=['c','b'], columns=['two'])
df3 = pd.DataFrame(np.random.randn(2),index=['a','d'], columns=['three'])
df1.join([df2,df3])
# 1.使用df.join 默认左连接 
# 2. columns 必须是非重叠列
# 3. coulumns =[],index=[] 只有一行一列也必须是list[]形式
# 沿轴向连接
pd.concat([s1,s2,s3], axis=1, keys=['one', 'two', 'three']) 
# 轴1连接 默认轴0  numpy 是 concatenate  outer默认 
# keys 分组来源 s1,s2,s3
# ignore_index = True 忽略行索引
# 联合重叠数据
np.where(pd.isnull(a), b, a)  # a 为空 填充b的值,非空返回a 并集
#Series、DataFrame
a.combine_first(a)    #  并集 ,DataFrame 逐列进行操作
# 重述和透视
df.stack()      # df - Series  行 - 列
df.unstack(0)   # Series - df   列 - 行  默认内层, unstack('state') 指定层
pivoted = ldata.pivot('date', 'item', 'value')
# date 透视 行索引, item 透视列索引, value 填充值
pivoted = ldata.pivot('date', 'item', ['value','value1']) # 返回df 多个值, 变多列
等价: ldata.set_index(['data', 'item']).unstack('item')
pd.melt(df, ['key']) # key 作为分组指标   变一列
pd.melt(df, id_vars=['key'], value_vars=['A','B']) # 列的子集

好的,第八章知识点记录结束

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值