数据转换一班包括一列数据转换为多列数据,行列转换,DataFrame转换为字典、DataFrame转换为列表和DataFrame转换为元组等。
如原始地址数据为:“广东省 深圳市 罗湖区 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)
在处理数据过程中,有时候需要对数据进行行列转换或重排,介绍以下三种方法的应用.
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='得分')
原数据:

运行结果:

使用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)
使用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)
首先通过循环语句读取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)
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