Python之数据爬取&数据可视化,正式加入字节跳动

本文介绍了使用Python爬取淘宝月饼销售数据的过程,包括数据抓取、清洗(处理缺失值、单位转换和数据整合),并通过数据可视化(柱状图、地图和饼图)展示了销量Top10店铺和不同价格区间销量占比。
摘要由CSDN通过智能技术生成

print(“正在爬取第{}页”.format(page_num + 1))

browser.get(‘https://s.taobao.com/search?q={}&s={}’.format(key_word, page_num*44))

browser.implicitly_wait(15)

get_data()

page_num += 1

print(“数据爬取完毕!”)

if name == ‘main’:

key_word = “月饼”

browser = webdriver.Chrome()

main()

数据处理和可视化:

代码块

# 导包

import pandas as pd

import numpy as np

import re

# 导入爬取得到的数据

df = pd.read_csv(“月饼.csv”, engine=‘python’, encoding=‘utf-8-sig’, header=None)

df.columns = [“商品名”, “价格”, “付款人数”, “店铺”, “发货地址”]

df.head(10)

# 去除重复值

df.drop_duplicates(inplace=True)

# 处理购买人数为空的记录

df[‘付款人数’]=df[‘付款人数’].replace(np.nan,‘0人付款’)

# 提取数值

df[‘num’] = [re.findall(r’(\d+.{0,1}\d*)', i)[0] for i in df[‘付款人数’]]  # 提取数值

df[‘num’] = df[‘num’].astype(‘float’)  # 转化数值型

# 提取单位(万)

df[‘unit’] = [‘’.join(re.findall(r’(万)', i)) for i in df[‘付款人数’]]  # 提取单位(万)

df[‘unit’] = df[‘unit’].apply(lambda x:10000 if x==‘万’ else 1)

# 计算销量

df[‘销量’] = df[‘num’] * df[‘unit’]

# 删除无发货地址的商品,并提取省份

df = df[df[‘发货地址’].notna()]

df[‘省份’] = df[‘发货地址’].str.split(’ ').apply(lambda x:x[0])

# 删除多余的列

df.drop([‘付款人数’, ‘发货地址’, ‘num’, ‘unit’], axis=1, inplace=True)

# 重置索引

df = df.reset_index(drop=True)

df.head(10)

#df.to_csv(‘清洗完成数据.csv’)

df1 = df.sort_values(by=“价格”, axis=0, ascending=False)

df1.iloc[:5,:]

import jieba

import jieba.analyse

txt = df[‘商品名’].str.cat(sep=‘。’)

# 添加关键词

jieba.add_word(‘粽子’, 999, ‘五芳斋’)

# 读入停用词表

stop_words = []

with open(‘stop_words.txt’, ‘r’, encoding=‘utf-8’) as f:

lines = f.readlines()

for line in lines:

stop_words.append(line.strip())

# 添加停用词

stop_words.extend([‘logo’, ‘10’, ‘100’, ‘200g’, ‘100g’, ‘140g’, ‘130g’])

# 评论字段分词处理

word_num = jieba.analyse.extract_tags(txt,

topK=100,

withWeight=True,

allowPOS=())

# 去停用词

word_num_selected = []

for i in word_num:

if i[0] not in stop_words:

word_num_selected.append(i)

key_words = pd.DataFrame(word_num_selected, columns=[‘words’,‘num’])

import pyecharts

print(pyecharts.version)

# 导入包

from pyecharts.charts import Bar

from pyecharts import options as opts

# 计算top10店铺

shop_top10 = df.groupby(‘商品名’)[‘销量’].sum().sort_values(ascending=False).head(10)

# 绘制柱形图

bar0 = Bar(init_opts=opts.InitOpts(width=‘1350px’, height=‘750px’))

bar0.add_xaxis(shop_top10.index.tolist())

bar0.add_yaxis(‘sales_num’, shop_top10.values.tolist())

bar0.set_global_opts(title_opts=opts.TitleOpts(title=‘月饼商品销量Top10’),

xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),

visualmap_opts=opts.VisualMapOpts(max_=shop_top10.values.max()))

bar0.render(“月饼商品销量Top10.html”)

from pyecharts.charts import Map

# 计算销量

province_num = df.groupby(‘省份’)[‘销量’].sum().sort_values(ascending=False)

# 绘制地图

map1 = Map(init_opts=opts.InitOpts(width=‘1350px’, height=‘750px’))

map1.add(“”, [list(z) for z in zip(province_num.index.tolist(), province_num.values.tolist())],

maptype=‘china’

)

map1.set_global_opts(title_opts=opts.TitleOpts(title=‘各省份月饼销量分布’),

visualmap_opts=opts.VisualMapOpts(max_=300000),

toolbox_opts=opts.ToolboxOpts()

)

map1.render(“各省份月饼销量分布.html”)

from pyecharts.charts import Pie

def price_range(x): #按照淘宝推荐划分价格区间

if x <= 22:

return ‘22元以下’

elif x <= 115:

return ‘22-115元’

elif x <= 633:

return ‘115-633元’

else:

return ‘633元以上’

df[‘price_range’] = df[‘价格’].apply(lambda x: price_range(x))

price_cut_num = df.groupby(‘price_range’)[‘销量’].sum()

data_pair = [list(z) for z in zip(price_cut_num.index, price_cut_num.values)]

print(data_pair)

# 饼图

pie1 = Pie(init_opts=opts.InitOpts(width=‘1350px’, height=‘750px’))

# 内置富文本

pie1.add(

series_name=“销量”,

radius=[“35%”, “55%”],

data_pair=data_pair,

label_opts=opts.LabelOpts(formatter=‘{{b}—占比{d}%}’),

)

pie1.set_global_opts(legend_opts=opts.LegendOpts(pos_left=“left”, pos_top=‘30%’, orient=“vertical”),

toolbox_opts=opts.ToolboxOpts(),

title_opts=opts.TitleOpts(title=‘不同价格区间的月饼销量占比’))

pie1.render(“不同价格区间的月饼销量占比.html”)

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Python开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注Python)
img

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

31e6781512b.png)

三、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值