数据分析实战1:淘宝数据分析

本文需要用到的数据分析包有pandas、numpy、matplotlib、jieba、seaborn

数据分析的步骤:

  • 数据预处理(去重、缺失值处理)

  • 数据查看(找到有用的分析数据)

  • 数据探索(依照数据给出探索出的结果)

数据预处理

 

1、模块导入

import pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport jiebaimport seaborn as sns

2、数据导入

字段介绍:update_time表示购买时间,id表示唯一标识符、title标识产品名称、price表示价格、sale_count表示销售数量、comment_count表示评论数量、店名。​​​​​​​

data=pd.read_csv('./双十一淘宝美妆数据.csv')data.head()

3、查看数据基本信息​​​​​​​

print(data.shape)print(data.info())
# sale_count、comment_count含有缺失值

4、重复值处理​​​​​​​

# 去除重复值data=data.drop_duplicates(inplace=False)# print(data.shape)
# 去除重复值之后,索引没有发生变化,因此可以使用以下方法来重置索引data.reset_index(inplace=True,drop=True)print(data.shape)

inplace参数的使用

inplace=False,默认该删除操作不改变原数据,

而是返回一个执行删除操作后的新dataframe(能用=进行赋值操作,但是碰到处理数据量大的时候,会造成内存滥用);

 

inplace=True,则会直接在原数据上进行删除操作,

删除后无法返回(这样操作省内存空间也就是减少资源占用,但不能用=进行赋值否则报错nonetype).

 

5、缺失值处理​​​​​​​

# 缺失值的处理方式有多种,1、可以直接删除 2、可以使用平均值替换 # 3、可以使用众数替换# 查看缺失值数据data.isnull().any()data.isnull().sum()
# 方法1:data.dropna(subset=['sale_count'])data.dropna(subset=['comment_count'])
# 方法2# 填入平均值data['sale_count'].fillna(data['sale_count'].mean,inplace=True)data['comment_count'].fillna(data['comment_count'].mean,inplace=True)print(data.isnull().any())
# 方法3# mode1=data.sale_count.mode()# mode2=data.comment_count.mode()# print(mode1)# print(mode2)

6、数据结构

data.describe()

 

数据查看

1、对title列处理。通过对标题的切词来找到有用的信息​​​​​​​

# 数据处理操作# 1、新增列值,使用切词来处理title标题
title_cut=[]for i in data.title:    j=jieba.lcut(i)    title_cut.append(j)data['item_name_cut']=title_cutdata[['title','item_name_cut']].head()

2、添加新列​​​​​​​

# 给商品添加分类sub_type=[]   # 子类别main_type=[]  # 主类别# 设置字符串格式basic_config_data="""护肤品  套装  套装              护肤品  乳液类  乳液  美白乳  润肤乳  凝乳  柔肤液  亮肤乳  菁华乳  修护乳护肤品  眼部护理  眼霜  眼部精华  眼膜          护肤品  面膜类  面膜                          护肤品  清洁类  洗面  洁面  清洁  卸妆  洁颜  洗颜  去角质  磨砂            护肤品  化妆水  化妆水  爽肤水  柔肤水  补水露  凝露  柔肤液  精粹水  亮肤水  润肤水  保湿水  菁华水  保湿喷雾  舒缓喷雾护肤品  面霜类  面霜  日霜  晚霜  柔肤霜  滋润霜  保湿霜  凝霜  日间霜  晚间霜  乳霜  修护霜  亮肤霜  底霜  菁华霜护肤品  精华类  精华液  精华水  精华露  精华素                    护肤品  防晒类  防晒霜  防晒喷雾                        化妆品  口红类  唇釉  口红  唇彩                      化妆品  底妆类  散粉  蜜粉  粉底液  定妆粉   气垫  粉饼  BB  CC  遮瑕  粉霜  粉底膏  粉底霜    化妆品  眼部彩妆  眉粉  染眉膏  眼线  眼影  睫毛膏                  化妆品  修容类  鼻影  修容粉  高光  腮红                    其他  其他  其他"""

3、设置类别字典并添加新列​​​​​​​

# 设置字典category_config_map={}for config_line in basic_config_data.split('\n'):    print(config_line)    basic_category_list=config_line.strip().strip('\n').strip('\t').split('\t')#     print(basic_category_list)    main_category=basic_category_list[0]#     print(main_category)    sub_category=basic_category_list[1]#     print(sub_category)    ubit_category_list=basic_category_list[2:-1]#     print(ubit_category_list)    for ubit_category in ubit_category_list:        if ubit_category and ubit_category.strip().strip('\t'):            category_config_map[ubit_category]=(main_category,sub_category)category_config_ma
for i in range(len(data)):    exist=False    for temp in data.item_name_cut[i]:#         print(temp)        if temp in category_config_map:#             print(category_config_map.get(temp)[0])#             print(category_config_map.get(temp)[1])            sub_type.append(category_config_map.get(temp)[1])            main_type.append(category_config_map.get(temp)[0])            exist=True            break    if not exist:        sub_type.append('其他')        main_type.append('其他')​​​​​​​
# 查看数据格式print(len(sub_type),len(main_type),len(data))​​​​​​
# 新增加列值data['sub_type']=sub_typedata['main_type']=main_typedata.head()

 

 

4、数据查看​​​​​​​

# 统计汇总data['sub_type'].value_counts()data['main_type'].value_counts()

5、判断特殊用法​​​​​​​

# 切词判断是否为特殊群体使用gender=[]for i in range(len(data)):    if '男' in data.item_name_cut[i]:        gender.append('是')    elif '男士' in data.item_name_cut[i]:        gender.append('是')    elif '男生' in data.item_name_cut[i]:        gender.append('是')    else:        gender.append('否')​​​​​​
data['是否男士专用']=genderdata['是否男士专用'].value_counts()

6、日期设置​​​​​​​

# 新增销售额和购买日期列值data['销售额']=data.sale_count*data.pricedata['update_time']=pd.to_datetime(data['update_time'])data['update_time']# 将时间设置成新的indexdata=data.set_index('update_time')data['day']=data.index.day

7、删除不需要的数据​​​​​​​

# 保存数据del data['item_name_cut']

8、保存数据

data.to_excel('clean_beautymakeup.xls',sheet_name='clean_data')

 

数据探索

 

1、各品牌sku数​​​​​​​

# 指定默认字体plt.rcParams['font.sans-serif']=['SimHei']# 负号显示问题plt.rcParams['axes.unicode_minus']=Falseplt.figure(figsize=(8,6))# 计算各店铺的商品数量data1=data['店名'].value_counts().sort_values(ascending=False)# 柱形图的设置data1.plot.bar(width=0.6,alpha=0.6,color='b')# 题目的设置plt.title('各品牌SKU数',fontsize=18)# 纵坐标的设置plt.ylabel('商品数量',fontsize=14)plt.show()

 

2、各品牌销售量个销售额分布​​​​​​​

# 品牌总销售量和总销售额# 设置画板,fig,axes=plt.subplots(1,2,figsize=(12,10))# 品牌总销售量,按照店名汇总升序排序ax1=data.groupby('店名').sale_count.sum().sort_values(ascending=True)# 绘制图表类型并放置画板位置ax2=ax1.plot(kind='barh',ax=axes[0],width=0.6)# 设置标题ax2.set_title('品牌总销售量',fontsize=12)# 设置横坐标轴ax2.set_xlabel('总销售额')

ax3=data.groupby('店名')['销售额'].sum().sort_values(ascending=True)ax4=ax3.plot(kind='barh',ax=axes[1],width=0.6)ax4.set_title('品牌总销售额',fontsize=12)ax4.set_xlabel('总销售额')
# plt.subplots_adjust(wspace=0.4)plt.show()

3、各类别的销售量个销售额介绍​​​​​​​

# 各类别的销售量,销售额情况fig,axes=plt.subplots(1,2,figsize=(12,5))# 主类别的分布data1=data.groupby('main_type')['sale_count'].sum()

ax1=data1.plot(kind='pie',ax=axes[0],               autopct='%.1f%%',    # 设置百分比格式,保留一位小数               pctdistance=0.8,     # 设置百分比标签与圆心距离               labels=data1.index,  # 设置标签值               labeldistance=1.05,  # 设置标签与圆心的距离               startangle=60,       # 设置饼图的初始角度               radius=1.1,          # 设置饼图的半径               counterclock=False,  # 是否逆时针,这里设置为顺时针方向               wedgeprops={'linewidth':1.2,'edgecolor':'k'},  # 设置饼图内外边界的属性值               textprops={'fontsize':10,'color':'k'}         # 设置文本标签的属性值              )ax1.set_title('主类别销售量占比',fontsize=20)
# 次类别的分布data2=data.groupby('sub_type')['sale_count'].sum()
ax2=data2.plot(kind='pie',ax=axes[1],               autopct='%.1f%%',    # 设置百分比格式,保留一位小数               pctdistance=0.8,     # 设置百分比标签与圆心距离               labels=data2.index,  # 设置标签值               labeldistance=1.2,  # 设置标签与圆心的距离               startangle=230,       # 设置饼图的初始角度               radius=1.1,          # 设置饼图的半径               counterclock=False,  # 是否逆时针,这里设置为顺时针方向               wedgeprops={'linewidth':1.2,'edgecolor':'k'},  # 设置饼图内外边界的属性值               textprops={'fontsize':10,'color':'k'},         # 设置文本标签的属性值              )ax2.set_title('子类别销售量占比',fontsize=20)
plt.subplots_adjust(wspace=0.4)plt.show()

 

4、各品牌种类的销售额和销售量分布​​​​​​​

# 各品牌总类的销售额和销售量
plt.figure(figsize=(14,6))# 设置柱形图sns.barplot(x='店名',y='sale_count',hue='main_type',data=data,            saturation=0.75,ci=0)plt.title('各品牌各总类的总销售额')plt.ylabel('销量')# 添加文本标注plt.text(0,78000,'注:此处可以使用堆叠图,对比效果更明显',         verticalalignment='top',horizontalalignment='left',color='gray',fontsize=10)plt.show()
plt.figure(figsize=(14,6))# 设置柱形图sns.barplot(x='店名',y='销售额',hue='main_type',data=data,            saturation=0.75,ci=0)plt.title('各品牌各总类的总销售额')plt.ylabel('销量额')plt.show()

5、各品牌各子类的总销量和总销售额​​​​​​​

# 各品牌各子类的总销售量plt.figure(figsize=(16,6))sns.barplot(x='店名',y='sale_count',hue='sub_type',data=data,saturation=0.75,ci=0)plt.title('各品牌各子类的总销售量')plt.ylabel('销量')plt.show()
# 各品牌各子类的总销售额plt.figure(figsize=(14,6))sns.barplot(x='店名',y='销售额',hue='sub_type',data=data,saturation=0.75,ci=0)plt.title('各品牌各子类的总销售额')plt.ylabel('销量额')plt.show()

6、各品牌的热度​​​​​​​

# 各品牌的热度,评论数plt.figure(figsize=(12,6))data1=data.groupby('店名').comment_count.mean().sort_values(ascending=False)data1.plot(kind='bar',width=0.8)plt.title('各品牌商品的平均评论数')plt.ylabel('评论数')plt.show()

  •  
plt.figure(figsize=(12,10))
x=data.groupby('店名')['sale_count'].mean()y=data.groupby('店名')['comment_count'].mean()s=data.groupby('店名')['price'].mean()txt=data.groupby('店名').id.count().index# print(txt)
sns.scatterplot(x,y,size=s,hue=s,sizes=(100,1500),data=data)
# 注释for i in range(len(txt)):    plt.annotate(txt[i],xy=(x[i],y[i]))
plt.ylabel('热度')plt.xlabel('销量')
plt.legend(loc='upper left')plt.show()

7、品牌价格对比​​​​​​​

# 各品牌的价格,箱线图的绘制
plt.figure(figsize=(14,6))sns.boxplot(x='店名',y='price',data=data)plt.ylim(0,2500)plt.show()

​​​​​​​

# 各品牌产品的平均价格fig=plt.figure(figsize=(12,6))
data.groupby('店名').price.sum()avg_price=data.groupby('店名').price.sum()/data.groupby('店名').price.count()data1=avg_price.sort_values(ascending=False)
data1.plot(kind='bar',width=0.8,alpha=0.6,color='b',label='各品牌平均价格')# 平均价格y=data['price'].mean()plt.axhline(y,0.1,color='r',label='全品牌平均价格')
# 设置图标plt.ylabel('各品牌平均价格')plt.title('各品牌产品的平均价格',fontsize=24)# 图例设置plt.legend(loc='best')plt.show()

 

随着大数据的时代的到来,数据变得越来越重要,数据可以帮助我们来看清行业的本质,也可以帮助我们更加快速的了解一个行业,关注公众号——DT学说,走进数据的时代

 

 

  • 5
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: Python金融数据分析是一门应用Python编程语言进行金融数据处理和分析的技术。进行金融数据分析可以帮助金融从业人员了解市场趋势、制定交易策略和评估风险。 CSDN是一个IT技术社区,提供了大量关于Python金融数据分析的学习资源和实战项目。 首先,入门阶段,我们可以通过CSDN学习Python语言的基础知识,包括数据类型、控制结构、函数等;学习Python中与金融数据处理和分析相关的库,如NumPy、Pandas、matplotlib等,掌握这些库的使用方法。 接下来,我们可以通过CSDN提供的教程和案例学习如何使用Python进行金融数据预处理,包括数据清洗、缺失值处理、数据标准化等;学习如何使用Python进行金融数据可视化,通过绘制图表展示数据的趋势和关联性。 进一步地,我们可以通过CSDN上的实战项目学习如何应用Python进行金融数据分析。例如,可以学习如何使用Python进行金融时间序列分析,预测股票价格;学习如何使用Python进行金融风险管理,评估投资组合的风险;学习如何使用Python进行金融文本数据分析,从新闻和社交媒体等大量文本数据中挖掘金融市场的信息等。 通过CSDN提供的学习资源和实战项目,我们可以逐步掌握Python金融数据分析的技能,并将其应用于实际金融问题的解决中。不断学习和实践将使我们在金融行业中具备竞争力,并能够更好地抓住市场机遇。 ### 回答2: Python金融数据分析入门到实战是一门在CSDN学习的课程,旨在教会学员如何使用Python进行金融数据分析,并能够运用所学知识在实际项目中进行实战。 这门课程首先介绍了Python在金融数据分析领域的重要性和应用场景。随着金融行业数据量的迅速增长,使用Python进行数据分析已经成为必不可少的技能之一。接着,课程会引导学员搭建Python开发环境,并介绍常用的金融数据分析工具和库,如pandas、numpy等。 在学习过程中,学员将学到如何读取金融数据,并进行数据的清洗和预处理。这是数据分析的第一步,只有数据质量好,才能进行有效的分析。之后,课程将重点讲述如何利用Python进行数据可视化。通过绘制各种图表和图像,可以更直观地展示数据的分布、趋势和关联性,为后续的分析提供更好的依据。 除此之外,课程还会介绍金融数据分析中的常见算法和模型,例如回归分析、时间序列分析、机器学习等。学员将了解不同算法的原理和应用场景,并能够利用Python实现这些算法。通过实战项目,学员可以更好地理解算法和模型的实际应用,提高自己的数据分析能力。 最后,该课程还会涉及一些金融市场的实战案例,如股票分析、投资组合优化等。学员可以应用所学的知识和工具,对真实的金融数据进行分析和预测,为投资决策提供支持。 而言之,Python金融数据分析入门到实战课程通过理论与实践结合的方式,教会学员如何使用Python进行金融数据分析。通过该课程的学习,学员可以掌握数据处理、数据可视化、算法应用等技能,并能够将其应用于实际金融项目中。这门课程对于有意向从事金融数据分析工作的人员来说,具有很高的实用价值。 ### 回答3: Python是一种高级编程语言,通过它可以进行金融数据分析。在金融领域,数据分析是非常重要的,可以帮助人们做出更好的金融决策,预测市场走势,评估投资风险等。 Python具有丰富的库和模块,多样的功能可以用于金融数据分析,其中最为常用的包括Pandas,Numpy,Matplotlib等。 Pandas是处理和分析金融数据的重要库,它提供了灵活的数据结构和数据处理工具,使得数据预处理和清洗变得更加简单。Pandas还提供了大量的统计函数和方法,方便用户对数据进行统计分析。 Numpy是Python中一个重要的数值计算库,它提供了很多数学函数和处理数组的功能,非常适合用来进行数值计算和矩阵操作。在金融数据分析中,可以利用Numpy来进行金融计算、统计量计算和回归等分析。 Matplotlib是一种绘图库,通过它可以制作各种图表,如折线图、柱状图、散点图等。在金融数据分析中,我们可以使用Matplotlib来可视化数据,以便更直观地理解数据的特征和趋势。 在学习Python金融数据分析的过程中,可以参考CSND上的教程。这个教程包括从入门到实战的内容,可以帮助初学者快速掌握Python金融数据分析的基本知识和技能。此外,还可以通过阅读相关书籍和参加培训课程来深入学习和实践。 之,Python金融数据分析是一个很有前景和实用性的领域,通过学习Python和相关库的使用,可以更加高效地进行金融数据分析,并取得更好的分析结果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值