Pandas - 数据转换

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

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

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

        1.split()方法

import pandas as pd

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

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

import pandas as pd

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

        上述两种方法效果一致。

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

import pandas as pd

df = pd.DataFrame({'a':[1,2,3,4,5], 'b':[(1,2), (3,4),(5,6),(7,8),(9,10)]})
print(df)

# apply函数分割元组
df[['b1', 'b2']] = df['b'].apply(pd.Series)
print(df)

#或者join方法结合apply函数分割元组
#df= df.join(df['b'].apply(pd.Series))
#print(df)

 2.行列转换

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

        1.stack()方法

import pandas as pd

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

        2.unstack()方法

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

        3.pivot()方法

import pandas as pd

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

原数据: 

运行结果:

3.DataFrame转换为字典 

        使用DataFrame的to_dict()方法。

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

4.DataFrame转换为列表

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

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

5.DataFrame转换为元组

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

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

6.Excel转换为HTML网页格式

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

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

《python数据分析》p113

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值