目的:了解市场上6月份男鞋销售情况
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
df = pd.DataFrame(pd.read_excel('6月男鞋数据.xlsx')) #导入数据
print(df.head()) #打印前5列,查看数据结构
data = df.iloc[:,:19] #获取有字段的列
print(data.columns) #列名
print(data.shape) #行列数
#分组求和np.sum,分组求均值np.mean
shoe_class_volume = data[['品牌','月销量']]
grouped = shoe_class_volume.groupby('品牌')
result = grouped.agg(np.sum).reset_index() #reset_index函数使得结果重新转化成DataFrame的结构
#作图
x = result['品牌']
y = result['月销量']
plt.figure()#定义一个图像窗口
plt.plot(x,y)#plot()画出曲线
plt.show()#显示图像
def groupby_sum(var1,var2):
"""
var1: 变量
var2:统计值
"""
volume = data[[var1, var2]]
grouped = volume.groupby(var1)
result = grouped.agg(np.sum).reset_index() #reset_index函数使得结果重新转化成DataFrame的结构
return result
将结果导出到excel
var2 = '月销量'
vlist = ['材质','风格', '尺码', '上市年季']
file_path = 'output.xlsx'
writer = pd.ExcelWriter(file_path)
for i,v in enumerate(vlist):
ans = groupby_sum(v,var2)
ans.to_excel(excel_writer=writer, sheet_name = 'Sheet' + str(i))
writer.save()
writer.close()
print("==========================")
price = data[['价格','牌价']]
price['diff'] = None #新增一列
#iterrows按照每行迭代,每行的数据格式是series类似于数组
res = pd.Series([])
for k,v in price[:5].iterrows():
v[2] = v[1] - v[0]
res = res.append(v)
data.corr() #所以特征的相关系数
#============================
#价格和销量的相关系数
price = data['价格']
volume = data['月销量']
#做散点图,判断是否二者是否存在线性相关
plt.scatter(price, volume)
plt.title('price and volume')
plt.xlabel('price')
plt.ylabel('volume')
plt.savefig('price and volume.png')
plt.show
#从图中可知,存在异常值,二者不存在明显的线性关系(person),且二者不存在分类数据(Kendall),因此选择spearman相关系数
r=price.corr(volume, method='spearman')
#数据库中字段导出txt文件
title = data['备注']
title.to_csv('title.txt', sep='\t', index=False)
具体教程见用Python实现一个词频统计(词云)图
安装过程出现一些错误