2022年全国各省地级市GDP均值(除港澳台及直辖市)数据可视化实战_全国各省gdp数据csv(1)

drwxr-xr-x 28 root root 4096 1月 27 00:48 anaconda3

drwxr-xr-x 11 root root 227 1月 26 19:23 hadoop-3.3.6

drwxr-xr-x 5 root root 114 2月 12 12:35 hadoop-snappy-master

drwxr-xr-x 10 root root 205 2月 12 18:53 hive-3.1.3

drwxr-xr-x 6 root root 99 2月 12 12:23 maven-3.9.6

drwxr-xr-x 6 60692 5000 4096 2月 12 12:21 snappy-1.1.1

drwxrwxrwx 15 root root 235 2月 7 20:40 spark-3.5.0

drwxrwxrwx. 4 root root 32 2月 11 22:19 tmp

hdfs dfs -ls /

Found 3 items

drwxrwxrwx - root supergroup 0 2024-02-21 13:48 /sparklog

drwxrwxrwx - root supergroup 0 2024-02-17 01:28 /tmp

drwxrwxrwx - root supergroup 0 2024-02-17 01:04 /user


conda创建并激活虚拟环境



conda create -n pyspark python=3..
conda activate pyspark


python导包



import re
import time
import requests
import pandas as pd
from tqdm import tqdm
from lxml import etree
from pyhive import hive
from pyspark.sql import SparkSession
from pyecharts import charts
from pyecharts import options as opts


##### 二、获取数据


确定目标网址:https://www.hongheiku.com/category/gdjsgdp  
 获取伪装参数:‘user-agent’:‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36’  
 通过requests构造get请求获取单页html数据。  
 使用xpath解析式解析html标签数据获得省份、GDP列表数据和总页数整数数据。  
 通过pandas将列表数据转为数据帧dataframe。



获取单页数据

def get_page_data(page):
urls = {
‘page=1’:‘https://www.hongheiku.com/category/gdjsgdp’,
‘page>1’:‘https://www.hongheiku.com/category/gdjsgdp/page/{}’.format(page)}
headers = {
‘user-agent’:‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36’}
url = urls[‘page=1’] if page==1 else urls[‘page>1’]
response = requests.get(url=url,headers=headers)
if response.status_code != 200:
return response.status_code
if response.status_code == 200:
text = response.text
# with open(‘data.html’,‘w’,encoding=‘utf-8’) as file:
# file.write(text)
# with open(‘data.html’,‘r’,encoding=‘utf-8’) as file:
# text = file.read()
element = etree.HTML(text)
id = element.xpath(‘//tr[@class=“even”]/td[@class=“column-1”]//center//text()’)
pro = element.xpath(‘//tr[@class=“even”]/td[@class=“column-2”]//center//text()’)
gdp = element.xpath(‘//tr[@class=“even”]/td[@class=“column-3”]//center//text()’)
year = element.xpath(‘//tr[@class=“even”]/td[@class=“column-4”]//center//text()’)
df = pd.DataFrame({
‘id’:id,
‘pro’:pro,
‘gdp’:gdp,
‘year’:year})
pages = ‘’.join(element.xpath(‘//div[@class=“pagination pagination-multi”]//span/text()’))
pages = int(‘’.join(re.findall(‘共 ([0-9]) 页’,pages)))
time.sleep(1)
return df,pages


循环调用get\_page\_data函数获取所有页数据。



获取全部数据

def get_data():
df,pages = get_page_data(1)
for i in tqdm(range(2,pages+1,1)):
dfi,pages = get_page_data(i)
df = pd.concat([df,dfi])
df.to_csv(‘data.csv’,encoding=‘utf-8’,index=None)


##### 三、清洗数据


筛选出年份为2022年的数据。  
 去除GDP列自带的单位字符“亿”。  
 标准化省份数据,打通地区数据接口。



清洗数据

def clean_data(file_path):
df = pd.read_csv(file_path,encoding=‘utf-8’,dtype=str)
df = df[df[‘year’] == ‘2022’]
df[‘gdp’] = list(map(lambda x:float(str(x).rstrip(‘亿’)),df[‘gdp’]))
dict0 = {
‘重庆’:‘重庆市’,‘北京’:‘北京市’,‘天津’:‘天津市’,‘上海’:‘上海市’,
‘香港’:‘香港特别行政区’,‘澳门’:‘澳门特别行政区’,
‘内蒙古’:‘内蒙古自治区’,‘西藏’:‘西藏自治区’,
‘新疆’:‘新疆维吾尔自治区’,‘宁夏’:‘宁夏回族自治区’,‘广西’:‘广西壮族自治区’}
df[‘pro’] = list(map(
lambda x:str(x).lstrip(‘[’).partition(‘]’)[0],df[‘pro’]))
df[‘pro’] = list(map(
lambda x:dict0[x] if x in dict0.keys() else x +‘省’,df[‘pro’]))
return df


##### 四、聚合数据


按照省份对GDP进行求平均聚合。  
 对省平均GDP统一保留两位小数。



聚合数据

def work_data(df:pd.DataFrame):
df = df.groupby([‘pro’]).mean(‘gdp’).reset_index().sort_values(‘gdp’,ascending=False)
df.index = range(df.shape[0])
df[‘gdp’] = list(map(lambda x:round(x,2),df[‘gdp’]))
return df


##### 五、上传数据


启动伪分布式集群代码。



start-all.sh
mr-jobhistory-daemon.sh start historyserver
/opt/spark-3.5.0/sbin/start-all.sh
/opt/spark-3.5.0/sbin/start-history-server.sh
nohup hive --service metastore &


检测metastore(hive)端口是否启动成功。



netstat -anp|grep 9083

tcp6 0 0 :::9083 ::😗 LISTEN 9919/java


hive编写sql创建数据库。



create database myproject;


pyspark上传数据到metastore。



上传数据

def upload_data(df:pd.DataFrame):
global spark
spark = SparkSession.Builder(
).appName(‘test’).master(‘local[*]’)
.config(‘spark.sql.shuffle.partitions’,‘2’)
.config(‘spark.sql.warehouse.dir’,‘hdfs://ml:9000/user/hive/warehouse’)
.config(‘hive.metastore.uris’,‘thrift://ml:9083’
).enableHiveSupport().getOrCreate()
df = spark.createDataFrame(df)
spark.sql(‘drop table if exists myproject.data;’)
df.write.mode(‘overwrite’).saveAsTable(‘myproject.data’,‘parquet’)
df.show()


编写标准入口函数。



入口函数

def main():
try:
get_data()
except:
print(get_data())
df = clean_data(‘data.csv’)
df = work_data(df)
upload_data(df)
if name == ‘__main__’:
main()



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

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

**因此收集整理了一份《2024年大数据全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。**
![img](https://img-blog.csdnimg.cn/img_convert/f90a55ca77f4d55ab4905052867e179e.png)
![img](https://img-blog.csdnimg.cn/img_convert/c29756dc11d7944139b1ecd37409e42f.png)
![img](https://img-blog.csdnimg.cn/img_convert/e4ef26521cd447253b447fc44679316a.png)
![img](https://img-blog.csdnimg.cn/img_convert/0baeafc48cec18788a7b8a4402f6be1d.png)
![img](https://img-blog.csdnimg.cn/img_convert/06d1d6850415ceee1d3987b62d269880.png)

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

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

**如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注大数据获取)**
![img](https://img-blog.csdnimg.cn/img_convert/8b2d35dd28c9bbfa41572c7b59c21164.png)

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

,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

**如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注大数据获取)**
[外链图片转存中...(img-HZ3GRpnO-1712947183410)]

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值