数据转换一班包括一列数据转换为多列数据,行列转换,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