pandas 数据转换 分组统计

#数据分组统计
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)              #保存在当前文件夹
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值