• B站14天数据分析笔记5次课Pandas


    数据的重塑和轴向旋转

    • 行列层次化索引
    • Series转DataFrame
    • 索引交换层次
    • 每个索引项都是个元组 按正常索引序列访问既可
    • 数据旋转/行列转化 转置
    import numpy as np
    import pandas as pd
    df=pd.read_excel("movie_data2.xlsx")
    df[:5]
    

    在这里插入图片描述

    层次化索引

    s=pd.Series(np.arange(1,10),index=[['a','a','a','b','b','c','c','d','d'],[1,2,3,1,2,3,1,2,3]])
    s
    

    在这里插入图片描述

    s.index
    

    在这里插入图片描述

    Series转DataFrame

    不堆叠unstack 将series 变成dataframe

    s.unstack().stack()
    

    在这里插入图片描述

    对Dataframe 行列层次化索引

    data=pd.DataFrame(np.arange(12).reshape(4,3),index=[['a','a','b','b'],[1,2,1,2]],columns=[['A','A','B'],['Z','X','C']])
    print(data)
    

    在这里插入图片描述

    索引交换层次

    data.index.names=['row2','row1']
    data.columns.names=['col1','col2']
    data
    

    在这里插入图片描述

    data.swaplevel('row1','row2')
    data
    

    在这里插入图片描述

    set_index把列变成索引 reset_index把索引变成列

    df=df.set_index(['产地','年代'])
    df
    

    在这里插入图片描述

    每个索引项都是个元组 按正常索引序列访问既可

    df.index[0]
    

    (‘美国’, 1994)

    行标签索引行数据 两边闭区间 以年代为索引

    df.loc['美国'] 
    

    在这里插入图片描述

    取消层次化索引

    
    df=df.reset_index()
    

    在这里插入图片描述

    数据旋转

    在这里插入图片描述

    分组与聚合 (groupby/数据透视表格pivot_table)

    group=df.groupby(df['产地'])
    type(group)
    group.sum()
    

    在这里插入图片描述

    使用聚合函数

    df['评分'].groupby(df['年代']).mean()
    

    在这里插入图片描述

    groupby多个分组变量

    df.groupby([df['产地'],df['年代']]).mean()
    

    在这里插入图片描述

    #每个地区 每一年的评分的均值
    group=df['评分'].groupby([df['产地'],df['年代']])
    mean=group.mean()
    mean
    

    在这里插入图片描述

    mean.unstack().T#转为dataframe
    

    在这里插入图片描述

    离散化,分组/区间化处理

    python 之 .cut函数:
    区间化的定义 x数组 bins区间/序列 分组依据 right右端点 include_lowest左端点 labels 定义的名称等级
    pd.cut(x,bins,right = True,labels = None,retbins=False,precision = 3,include_lowest = False)

    df['评分等级'] = pd.cut(df['评分'],[0,3,5,7,9,10],labels = ['E','D','C','B','A'])
    df.head(10)
    

    在这里插入图片描述
    根据百分数的分布来切割区间 投票人数的排序分成五份 排名每20%作为一个等级

    bins = np.percentile(df['投票人数'],[0,20,40,60,80,100])
    df['热门程度'] = pd.cut(df['投票人数'],bins,labels = ['E','D','C','B','A'])
    df
    

    在这里插入图片描述

    合并数据集的三种方法

    .append

    将数据集拆分成多个 再进行合并

    df_usa = df[df.产地=='美国']
    df_cn = df[df.产地=='中国大陆']
    df_cn.append(df_usa)
    

    pd.merge

    python 之pd.merge函数
    pd.merge(left,right,how=‘inner’,on=None,left_on = None)
    left:左边的对象
    right:右边对象
    on:要加入的列:交集 连接键 左连接 右连接 内连接
    left_on:如果不同 则自己指定
    right_on:
    sort:按照连接件 排序
    suffixes:前缀 重复键 自定义后缀

    df1 = df.loc[:5]
    df1
    df2 = df.loc[:5][['名字','产地']]
    df2['票房']  = [123344,23454,343543,435,222,555]
    df2
    

    在这里插入图片描述

    在这里插入图片描述

    将数据表格打乱后重新设置索引

    df2 = df2.sample(frac = 1)
    df2
    

    在这里插入图片描述

    df2.index = range(len(df2))
    df2
    

    在这里插入图片描述
    合并

    pd.merge(df1,df2,how = "inner",on = '名字',)
    

    在这里插入图片描述

    pd.concat

    多个数据表 进行某一维度的拼接
    在这里插入图片描述

  • 相关阅读:
    旅行计划(拓扑排序)
    Extended traffic
    Tram(最短路)
    Cow and Friend(贪心)
    Invitation Cards(SPFA + 反向建边)
    Johnny and Another Rating Drop(找规律)
    python连接服务器上传文件,后台执行命令
    linux杀死某个进程
    linux安装杀毒软件
    django项目同一用户不能同时登陆
  • 原文地址:https://www.cnblogs.com/most-silence/p/15495354.html
Copyright © 2020-2023  润新知