• Pandas - 数据转换


            数据转换一班包括一列数据转换为多列数据,行列转换,DataFrame转换为字典、DataFrame转换为列表和DataFrame转换为元组等。

    1.一列数据转换为多列数据

            如原始地址数据为:“广东省 深圳市 罗湖区 xxxx”, 此时如果我们需要按照省来分类,就需要将“省”、“市”、“区”、“详细地址”分别拆分出来。

            1.split()方法

    1. import pandas as pd
    2. #导入Excel文件指定列数据(“买家会员名”和“收货地址”)
    3. df = pd.read_excel('mrbooks.xls',usecols=['买家会员名','收货地址'])
    4. #使用split方法分割“收货地址”
    5. series=df['收货地址'].str.split(' ',expand=True)
    6. df['省']=series[0]
    7. df['市']=series[1]
    8. df['区']=series[2]
    9. df1=df.head()

            2.join()方法与split()方法结合

    1. import pandas as pd
    2. #导入Excel文件部分列数据(“买家会员名”和“宝贝标题”)
    3. df = pd.read_excel('mrbooks.xls',usecols=['买家会员名','宝贝标题'])
    4. #使用join方法和split方法分割“宝贝标题”
    5. df = df.join(df['宝贝标题'].str.split(',', expand=True))
    6. df1=df.head()

            上述两种方法效果一致。

            3.将DataFrame中的tuple(元祖)类型数据分割成多列

    1. import pandas as pd
    2. df = pd.DataFrame({'a':[1,2,3,4,5], 'b':[(1,2), (3,4),(5,6),(7,8),(9,10)]})
    3. print(df)
    4. # apply函数分割元组
    5. df[['b1', 'b2']] = df['b'].apply(pd.Series)
    6. print(df)
    7. #或者join方法结合apply函数分割元组
    8. #df= df.join(df['b'].apply(pd.Series))
    9. #print(df)

     2.行列转换

            在处理数据过程中,有时候需要对数据进行行列转换或重排,介绍以下三种方法的应用.

            1.stack()方法

    1. import pandas as pd
    2. df=pd.read_excel('grade.xls') #导入Excel文件
    3. df = df.set_index(['班级','序号']) #设置2级索引“班级”和“序号”
    4. df = df.stack()
    5. print(df)

            2.unstack()方法

    1. import pandas as pd
    2. #设置数据显示的列数和宽度
    3. pd.set_option('display.max_columns',500)
    4. pd.set_option('display.width',1000)
    5. #解决数据输出时列名不对齐的问题
    6. pd.set_option('display.unicode.east_asian_width', True)
    7. df=pd.read_excel('grade.xls',sheet_name='英语2') #导入Excel文件
    8. df = df.set_index(['班级','序号','Unnamed: 2']) #设置多级索引
    9. print(df.unstack())

            3.pivot()方法

    1. import pandas as pd
    2. df=pd.read_excel('grade.xls',sheet_name='英语3') #导入Excel文件
    3. df1=df.pivot(index='序号',columns='班级',values='得分')

    原数据: 

    运行结果:

    3.DataFrame转换为字典 

            使用DataFrame的to_dict()方法。

    1. import pandas as pd
    2. df = pd.read_excel('mrbooks.xls')
    3. df1=df.groupby(["宝贝标题"])["宝贝总数量"].sum().head()
    4. mydict=df1.to_dict()
    5. for i,j in mydict.items():
    6. print(i,':\t', j)

    4.DataFrame转换为列表

            使用DataFrame的values.tolist()方法。

    1. import pandas as pd
    2. df =pd.read_excel('mrbooks.xls')
    3. df1=df[['买家会员名']].head()
    4. list1=df1['买家会员名'].values.tolist()
    5. for s in list1:
    6. print(s)

    5.DataFrame转换为元组

            首先通过循环语句读取DataFrame数据,然后使用元组函数tuple()将其转换为元组。

    1. import pandas as pd
    2. df = pd.read_excel('fl4.xls')
    3. df1=df[['label1','label2']].head()
    4. tuples = [tuple(x) for x in df1.values]
    5. for t in tuples:
    6. print(t)

    6.Excel转换为HTML网页格式

            Excel显示对于用户来说不友好,我们可以使用to_html()方法生成一个html页面来展示。此代码会在该目录生成一个html文件展示数据。 

    1. import pandas as pd
    2. df=pd.read_excel('mrbooks.xls',usecols=['买家会员名','宝贝标题']).head()
    3. df.to_html('mrbooks1.html',header = True,index = False)
    4. print(df)

    《python数据分析》p113

  • 相关阅读:
    【Spring】Dubbo(容错、协议、组件、负载)面试题
    KubeVirt with DPDK
    Java中的命名规则
    学习Oracle数据库相关基本操作(一)
    LeetCode每日一题(911. Online Election)
    教程图文详解 - 局域网与城城网(第四章)
    代理模式——动静态代理,面向接口编程
    i.MX 6ULL 驱动开发 二十三:UART
    微信朋友圈还可以这么玩?
    【办公-excel】两个时间相减 (二) - 带毫秒的时间进行相减操作
  • 原文地址:https://blog.csdn.net/m0_56190554/article/details/134294135