#数据分组统计
import pandas as pd
df=pd.read_csv('JD.csv',encoding='gbk')
#print(df)
#print(df[['一级分类','7天点击量','订单预定']].groupby('一级分类').sum().sort_values(by='7天点击量')) #按一列分组统计
#print(df[['一级分类','二级分类','7天点击量','订单预定']].groupby(['一级分类','二级分类']).sum()) #多列分组统计
#print(df[['一级分类','二级分类','7天点击量','订单预定']].groupby('二级分类')['7天点击量'].sum()) #指定列计算
#分组数据迭代
#df1=df[['一级分类','7天点击量','订单预定']]
#print(df1)
#for name,group in df1.groupby('一级分类'): #name是分类的值,group分组后的数据
# print(name)
# print(group) #迭代一级分组
#df2=df[['一级分类','二级分类','7天点击量','订单预定']]
#for (key1,key2),group in df2.groupby(['一级分类','二级分类']):
# print(key1,key2)
# print(group) #迭代两级分类
#print(df1.groupby('一级分类').sum()) #groupby()后没属性要加sum()
#print(df1.groupby('一级分类').agg(['mean','sum'])) #agg()聚合函数 平均值,总和
#print(df.groupby('一级分类').agg({'7天点击量':['mean','sum'],'订单预定':['sum']})) #不同列使用不同聚合函数
# df3=pd.read_excel('1月.xlsx')
# print(df3)
# #自定义函数实现分组 lambda
# max1=lambda x:x.value_counts(dropna=False).index[0]
# df4=df3.agg({
# '宝贝标题':[max1],
# '数量':['sum','mean'],
# '买家实际支付金额':['sum','mean'] #自定义函数分组 lambda 没懂
# })
# print(df4)
#通过字典和series对象进行分组统计 jd
df=df.set_index(['商品名称']) #将某列设置为索引
# dict1={
# '北京出库销量':'北上广','上海出库销量':'北上广',
# '广州出库销量':'北上广','成都出库销量':'成都',
# '武汉出库销量':'武汉','西安出库销量':'西安'
# }
# print(df)
# df1=df.groupby(dict1,axis=1).sum() #通过字典进行分组,将多列合并 axis默认为0 按行
# print(df1)
data={
'北京出库销量':'北上广','上海出库销量':'北上广',
'广州出库销量':'北上广','成都出库销量':'成都',
'武汉出库销量':'武汉','西安出库销量':'西安'
}
s1=pd.Series(data)
print(s1)
df2=df.groupby(s1,axis=1).sum() #通过series对象进行分组统计
print(df2)
#数据位移
import pandas as pd
data=[110,105,99,120,115]
index=[1,2,3,4,5]
df=pd.DataFrame(data=data,index=index,columns=['英语'])
df['升降']=df['英语']-df['英语'].shift() #shift()值上一个数
print(df)
#数据转换
import pandas as pd
#df=pd.read_excel('mrbooks.xls')
# series=df['收货地址'].str.split(' ',expand=True) #split()方法
# df['省']=series[0]
# df['市']=series[1]
# df['区']=series[2]
# print(df.head(5))
# df=df.join(df['宝贝标题'].str.split(',',expand=True)) #join()和split()结合
# print(df.head(5))
#元组数据分割
#df=pd.DataFrame({'a':[1,2,3,4,5],'b':[(1,2,7),(3,4),(5,6),(7,8),(9,10)]})
#print(df)
# df[['b1','b2']]=df['b'].apply(pd.Series) #apply()分割
# print(df)
# df=df.join(df['b'].apply(pd.Series)) #join()分割 自动在后面加列
# print(df)
#行列转换 jupyter运行不了
#df=pd.read_excel('grade.xls')
# df=df.set_index(['班级','序号'])
# df=df.stack() #stack()将列索引转换成最内层行索引
# df=df.unstack() #unstack()将最内层索引转换成列索引
# df=df.pivot(index='序号',columns='班级',values=’得分) #pivot()指定列作为行列索引和对应的值
# print(pd)
#dataframe转换成字典
# df=pd.read_excel('mrbooks.xls')
# df1=df.groupby(['宝贝标题'])['宝贝总数量'].sum().sort_values(ascending=False).head(5) #false降序
# print(df1,'\n')
# my_dict=df1.to_dict() #to_dict()
# print(my_dict,'\n')
# for i,j in my_dict.items():
# print(i,':\t',j) #\n 换行符 \t缩进
#dataframe转换成元组
# df=pd.read_excel('fl4.xls')
# print(df.head(5),'\n')
# df1=df[['label1','label2']].head(5)
# print(df1,'\n')
# tuples=[tuple(x) for x in df1.values] #tuple()
# for i in tuples:
# print(i)
#excel转换成html格式
df=pd.read_excel('mrbooks.xls')
df.to_html('mrbooks.html',header=True,index=False) #保存在当前文件夹