| 数据的重塑和轴向旋转行列层次化索引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
 
 离散化,分组/区间化处理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.mergepython 之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多个数据表 进行某一维度的拼接
  |