2024年最全Python之数据爬取&数据可视化,面试到三面

在这里插入图片描述

感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的:

① 2000多本Python电子书(主流和经典的书籍应该都有了)

② Python标准库资料(最全中文版)

③ 项目源码(四五十个有趣且经典的练手项目及源码)

④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)

⑤ Python学习路线图(告别不入流的学习)

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

python代码

数据爬取:

代码块

# -- coding: utf-8 --

from selenium import webdriver

import time

import csv

import re

# 搜索商品,获取商品页码

def search_product(key_word):

# 定位输入框    browser.find_element_by_id(“q”).send_keys(key_word)

# 定义点击按钮,并点击

browser.find_element_by_class_name(‘btn-search’).click()

# 最大化窗口:为了方便我们扫码

browser.maximize_window()

# 等待15秒,给足时间我们扫码

time.sleep(15)

# 定位这个“页码”,获取“共100页这个文本”

page_info = browser.find_element_by_xpath(‘//div[@class=“total”]’).text

# 需要注意的是:findall()返回的是一个列表,虽然此时只有一个元素它也是一个列表。

page = re.findall(“(\d+)”,page_info)[0]

return page

# 获取数据

def get_data():

# 通过页面分析发现:所有的信息都在items节点下

items = browser.find_elements_by_xpath(‘//div[@class=“items”]/div[@class="item J_MouserOnverReq  "]’)

for item in items:

# 参数信息

pro_desc = item.find_element_by_xpath(‘.//div[@class=“row row-2 title”]/a’).text

# 价格

pro_price = item.find_element_by_xpath(‘.//strong’).text

# 付款人数

buy_num = item.find_element_by_xpath(‘.//div[@class=“deal-cnt”]’).text

# 旗舰店

shop = item.find_element_by_xpath(‘.//div[@class=“shop”]/a’).text

# 发货地

address = item.find_element_by_xpath(‘.//div[@class=“location”]’).text

#print(pro_desc, pro_price, buy_num, shop, address)

with open(‘{}.csv’.format(key_word), mode=‘a’, newline=‘’, encoding=‘utf-8-sig’) as f:

csv_writer = csv.writer(f, delimiter=‘,’)

csv_writer.writerow([pro_desc, pro_price, buy_num, shop, address])

def main():

browser.get(‘https://www.taobao.com/’)

page = search_product(key_word)

print(page)

get_data()

page_num = 1

while int(page) != page_num:

print(“*” * 100)

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:

如果你也是看准了Python,想自学Python,在这里为大家准备了丰厚的免费学习大礼包,带大家一起学习,给大家剖析Python兼职、就业行情前景的这些事儿。

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

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

二、学习软件

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

三、全套PDF电子书

书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

四、入门学习视频

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

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

五、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

成为一个Python程序员专家或许需要花费数年时间,但是打下坚实的基础只要几周就可以,如果你按照我提供的学习路线以及资料有意识地去实践,你就有很大可能成功!
最后祝你好运!!!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 12
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值