first commit

master
2375259067 11 months ago
commit 89fccfbf25

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

@ -0,0 +1,214 @@
from pyecharts.charts import Bar
from pyecharts import options as opts
from pyspark.sql.functions import col, when, avg
import pickle
from 大数据.读取Hbase函数 import HBaseDataLoading
def create_bar():
# 需要的列族:列限定符
column = ['info:地址', 'info:净利润']
df = HBaseDataLoading(column)
# 广西的14个市级名称
cities = ['南宁市', '柳州市', '桂林市', '梧州市', '北海市', '防城港市', '钦州市', '贵港市', '玉林市', '百色市',
'贺州市', '河池市', '来宾市', '崇左市']
# 对每个市进行处理
for city in cities:
df = df.withColumn('地址', when(df['地址'].contains(city[:-1]), city).otherwise(df['地址']))
# 广西的所有县级行政区划及其对应的市级行政区划
county_to_city = {
# 南宁市
'兴宁区': '南宁市',
'青秀区': '南宁市',
'江南区': '南宁市',
'西乡塘区': '南宁市',
'良庆区': '南宁市',
'邕宁区': '南宁市',
'武鸣区': '南宁市',
'隆安县': '南宁市',
'马山县': '南宁市',
'上林县': '南宁市',
'宾阳县': '南宁市',
'横县': '南宁市',
# 柳州市
'城中区': '柳州市',
'鱼峰区': '柳州市',
'柳南区': '柳州市',
'柳北区': '柳州市',
'柳江区': '柳州市',
'柳城县': '柳州市',
'鹿寨县': '柳州市',
'融安县': '柳州市',
'融水苗族自治县': '柳州市',
'三江侗族自治县': '柳州市',
# 桂林市
'秀峰区': '桂林市',
'叠彩区': '桂林市',
'象山区': '桂林市',
'七星区': '桂林市',
'雁山区': '桂林市',
'临桂区': '桂林市',
'阳朔县': '桂林市',
'灵川县': '桂林市',
'全州县': '桂林市',
'兴安县': '桂林市',
'永福县': '桂林市',
'灌阳县': '桂林市',
'龙胜各族自治县': '桂林市',
'资源县': '桂林市',
'平乐县': '桂林市',
'荔浦市': '桂林市',
'恭城瑶族自治县': '桂林市',
# 梧州市
'万秀区': '梧州市',
'长洲区': '梧州市',
'龙圩区': '梧州市',
'苍梧县': '梧州市',
'藤县': '梧州市',
'蒙山县': '梧州市',
'岑溪市': '梧州市',
# 北海市
'海城区': '北海市',
'银海区': '北海市',
'铁山港区': '北海市',
'合浦县': '北海市',
# 防城港市
'港口区': '防城港市',
'防城区': '防城港市',
'上思县': '防城港市',
'东兴市': '防城港市',
# 钦州市
'钦南区': '钦州市',
'钦北区': '钦州市',
'灵山县': '钦州市',
'浦北县': '钦州市',
# 贵港市
'港北区': '贵港市',
'港南区': '贵港市',
'覃塘区': '贵港市',
'平南县': '贵港市',
'桂平市': '贵港市',
# 玉林市
'玉州区': '玉林市',
'福绵区': '玉林市',
'容县': '玉林市',
'陆川县': '玉林市',
'博白县': '玉林市',
'兴业县': '玉林市',
'北流市': '玉林市',
# 百色市
'右江区': '百色市',
'田阳县': '百色市',
'田东县': '百色市',
'平果县': '百色市',
'德保县': '百色市',
'那坡县': '百色市',
'凌云县': '百色市',
'乐业县': '百色市',
'田林县': '百色市',
'西林县': '百色市',
'隆林各族自治县': '百色市',
'靖西市': '百色市',
# 贺州市
'八步区': '贺州市',
'平桂区': '贺州市',
'昭平县': '贺州市',
'钟山县': '贺州市',
'富川瑶族自治县': '贺州市',
# 河池市
'金城江区': '河池市',
'南丹县': '河池市',
'天峨县': '河池市',
'凤山县': '河池市',
'东兰县': '河池市',
'罗城仫佬族自治县': '河池市',
'环江毛南族自治县': '河池市',
'巴马瑶族自治县': '河池市',
'都安瑶族自治县': '河池市',
'大化瑶族自治县': '河池市',
'宜州市': '河池市',
# 来宾市
'兴宾区': '来宾市',
'忻城县': '来宾市',
'象州县': '来宾市',
'武宣县': '来宾市',
'金秀瑶族自治县': '来宾市',
'合山市': '来宾市',
# 崇左市
'江州区': '崇左市',
'扶绥县': '崇左市',
'宁明县': '崇左市',
'龙州县': '崇左市',
'大新县': '崇左市',
'天等县': '崇左市',
'凭祥市': '崇左市',
# 特殊值
'高新技术产业开发区': '南宁市',
'南宁经济技术开发区': '南宁市',
'东盟经济技术开发区': '南宁市',
'高新区': '南宁市',
'武鸣县': '南宁市',
'隆安': '南宁市',
'融水县': '柳州市',
'融安': '柳州市',
'柳江县': '柳州市',
'柳邕': '柳州市',
'平果': '百色市',
'田阳': '百色市',
'灵川': '桂林市',
'临桂': '桂林市',
'龙胜县': '桂林市',
'荔浦县': '桂林市',
'恭城县': '桂林市',
'巴马县': '河池市',
'罗城': '河池市',
'合浦': '北海市',
# 特殊值2
'科园西十路24号': '南宁市',
'科园东四路5号': '南宁市',
'秀安路13-11号': '南宁市',
'科园大道31号财智时代12楼': '南宁市',
'新兴工业园创业路6号': '柳州市',
'洛维工业集中区': '柳州市',
'中马产业园区': '钦州市',
'长安工业集中区': '桂林市',
'西江四路扶典上冲29号': '梧州市',
'田东石化工业': '百色市',
}
# 对每个县级行政区划进行处理
for county, city in county_to_city.items():
df = df.withColumn('地址', when(df['地址'].contains(county), city).otherwise(df['地址']))
# 将净利润的列数据转换为float
df = df.withColumn("净利润", col("净利润").cast("float"))
# 按市分组并计算平均净利润
df_avg = df.groupBy("地址").agg(avg("净利润").alias("平均净利润"))
# 将Spark DataFrame转换成Pandas DataFrame
pandas_df = df_avg.toPandas()
# 将平均净利润取整
pandas_df['平均净利润'] = pandas_df['平均净利润'].round()
# 按平均净利润排序
pandas_df = pandas_df.sort_values(by='平均净利润', ascending=False)
# 创建Bar对象
bar = Bar()
# 设置x轴和y轴的数据
x_axis = pandas_df['地址'].tolist()
y_axis = [round(amount / 100000, 3) for amount in pandas_df['平均净利润'].tolist()]
# 添加数据到Bar对象中
bar.add_xaxis(x_axis)
bar.add_yaxis("平均净利润(亿元)", y_axis)
# 调整x轴标签间隔
bar.set_global_opts(xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(interval=0)))
return bar

@ -0,0 +1,208 @@
from pyecharts import options as opts
from pyecharts.charts import Bar
from pyspark.sql.functions import col, when, avg
from 大数据.读取Hbase函数 import HBaseDataLoading
def create_bar():
# 需要的列族:列限定符
column = ['info:地址', 'info:其中:技术转让收入']
df = HBaseDataLoading(column)
# 广西的14个市级名称
cities = ['南宁市', '柳州市', '桂林市', '梧州市', '北海市', '防城港市', '钦州市', '贵港市', '玉林市', '百色市',
'贺州市', '河池市', '来宾市', '崇左市']
# 对每个市进行处理
for city in cities:
df = df.withColumn('地址', when(df['地址'].contains(city[:-1]), city).otherwise(df['地址']))
# 广西的所有县级行政区划及其对应的市级行政区划
county_to_city = {
# 南宁市
'兴宁区': '南宁市',
'青秀区': '南宁市',
'江南区': '南宁市',
'西乡塘区': '南宁市',
'良庆区': '南宁市',
'邕宁区': '南宁市',
'武鸣区': '南宁市',
'隆安县': '南宁市',
'马山县': '南宁市',
'上林县': '南宁市',
'宾阳县': '南宁市',
'横县': '南宁市',
# 柳州市
'城中区': '柳州市',
'鱼峰区': '柳州市',
'柳南区': '柳州市',
'柳北区': '柳州市',
'柳江区': '柳州市',
'柳城县': '柳州市',
'鹿寨县': '柳州市',
'融安县': '柳州市',
'融水苗族自治县': '柳州市',
'三江侗族自治县': '柳州市',
# 桂林市
'秀峰区': '桂林市',
'叠彩区': '桂林市',
'象山区': '桂林市',
'七星区': '桂林市',
'雁山区': '桂林市',
'临桂区': '桂林市',
'阳朔县': '桂林市',
'灵川县': '桂林市',
'全州县': '桂林市',
'兴安县': '桂林市',
'永福县': '桂林市',
'灌阳县': '桂林市',
'龙胜各族自治县': '桂林市',
'资源县': '桂林市',
'平乐县': '桂林市',
'荔浦市': '桂林市',
'恭城瑶族自治县': '桂林市',
# 梧州市
'万秀区': '梧州市',
'长洲区': '梧州市',
'龙圩区': '梧州市',
'苍梧县': '梧州市',
'藤县': '梧州市',
'蒙山县': '梧州市',
'岑溪市': '梧州市',
# 北海市
'海城区': '北海市',
'银海区': '北海市',
'铁山港区': '北海市',
'合浦县': '北海市',
# 防城港市
'港口区': '防城港市',
'防城区': '防城港市',
'上思县': '防城港市',
'东兴市': '防城港市',
# 钦州市
'钦南区': '钦州市',
'钦北区': '钦州市',
'灵山县': '钦州市',
'浦北县': '钦州市',
# 贵港市
'港北区': '贵港市',
'港南区': '贵港市',
'覃塘区': '贵港市',
'平南县': '贵港市',
'桂平市': '贵港市',
# 玉林市
'玉州区': '玉林市',
'福绵区': '玉林市',
'容县': '玉林市',
'陆川县': '玉林市',
'博白县': '玉林市',
'兴业县': '玉林市',
'北流市': '玉林市',
# 百色市
'右江区': '百色市',
'田阳县': '百色市',
'田东县': '百色市',
'平果县': '百色市',
'德保县': '百色市',
'那坡县': '百色市',
'凌云县': '百色市',
'乐业县': '百色市',
'田林县': '百色市',
'西林县': '百色市',
'隆林各族自治县': '百色市',
'靖西市': '百色市',
# 贺州市
'八步区': '贺州市',
'平桂区': '贺州市',
'昭平县': '贺州市',
'钟山县': '贺州市',
'富川瑶族自治县': '贺州市',
# 河池市
'金城江区': '河池市',
'南丹县': '河池市',
'天峨县': '河池市',
'凤山县': '河池市',
'东兰县': '河池市',
'罗城仫佬族自治县': '河池市',
'环江毛南族自治县': '河池市',
'巴马瑶族自治县': '河池市',
'都安瑶族自治县': '河池市',
'大化瑶族自治县': '河池市',
'宜州市': '河池市',
# 来宾市
'兴宾区': '来宾市',
'忻城县': '来宾市',
'象州县': '来宾市',
'武宣县': '来宾市',
'金秀瑶族自治县': '来宾市',
'合山市': '来宾市',
# 崇左市
'江州区': '崇左市',
'扶绥县': '崇左市',
'宁明县': '崇左市',
'龙州县': '崇左市',
'大新县': '崇左市',
'天等县': '崇左市',
'凭祥市': '崇左市',
# 特殊值
'高新技术产业开发区': '南宁市',
'南宁经济技术开发区': '南宁市',
'东盟经济技术开发区': '南宁市',
'高新区': '南宁市',
'武鸣县': '南宁市',
'隆安': '南宁市',
'融水县': '柳州市',
'融安': '柳州市',
'柳江县': '柳州市',
'柳邕': '柳州市',
'平果': '百色市',
'田阳': '百色市',
'灵川': '桂林市',
'临桂': '桂林市',
'龙胜县': '桂林市',
'荔浦县': '桂林市',
'恭城县': '桂林市',
'巴马县': '河池市',
'罗城': '河池市',
'合浦': '北海市',
# 特殊值2
'科园西十路24号': '南宁市',
'科园东四路5号': '南宁市',
'秀安路13-11号': '南宁市',
'科园大道31号财智时代12楼': '南宁市',
'新兴工业园创业路6号': '柳州市',
'洛维工业集中区': '柳州市',
'中马产业园区': '钦州市',
'长安工业集中区': '桂林市',
'西江四路扶典上冲29号': '梧州市',
'田东石化工业': '百色市',
}
# 对每个县级行政区划进行处理
for county, city in county_to_city.items():
df = df.withColumn('地址', when(df['地址'].contains(county), city).otherwise(df['地址']))
# 将技术转让收入的列数据转换为float
df = df.withColumn("其中:技术转让收入", col("其中:技术转让收入").cast("float"))
# 按市分组并计算平均技术转让收入
df_avg = df.groupBy("地址").agg(avg("其中:技术转让收入").alias("平均技术转让收入"))
# 将Spark DataFrame转换为Pandas DataFrame
pandas_df = df_avg.toPandas()
# 将平均技术转让收入取整
pandas_df['平均技术转让收入'] = pandas_df['平均技术转让收入'].round()
# 按平均技术转让收入排序
pandas_df = pandas_df.sort_values(by='平均技术转让收入', ascending=False)
# 创建Bar图表对象并配置图表属性
bar = (
# 创建一个bar图表对象
Bar()
.add_xaxis(pandas_df['地址'].tolist()) # 添加x轴数据即技术转让收入分组
.add_yaxis('平均技术转让收入(万元)', [round(amount / 10, 2) for amount in pandas_df['平均技术转让收入'].tolist()]) # 添加y轴数据即各技术转让收入分组的数量
)
# 调整x轴标签间隔
bar.set_global_opts(xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(interval=0)))
return bar

@ -0,0 +1,210 @@
from pyecharts.charts import Bar
from pyspark.sql import functions as F
from pyecharts import options as opts
from pyspark.sql.functions import sum
from 大数据.读取Hbase函数 import HBaseDataLoading
def create_line():
# 需要的列族:列限定符
column = ['info:地址', 'info:其中:出口总额']
df = HBaseDataLoading(column)
# 广西的14个市级名称
cities = ['南宁市', '柳州市', '桂林市', '梧州市', '北海市', '防城港市', '钦州市', '贵港市', '玉林市', '百色市',
'贺州市', '河池市', '来宾市', '崇左市']
# 对每个市进行处理
for city in cities:
df = df.withColumn('地址', F.when(df['地址'].contains(city[:-1]), city).otherwise(df['地址']))
# 广西的所有县级行政区划及其对应的市级行政区划
county_to_city = {
# 南宁市
'兴宁区': '南宁市',
'青秀区': '南宁市',
'江南区': '南宁市',
'西乡塘区': '南宁市',
'良庆区': '南宁市',
'邕宁区': '南宁市',
'武鸣区': '南宁市',
'隆安县': '南宁市',
'马山县': '南宁市',
'上林县': '南宁市',
'宾阳县': '南宁市',
'横县': '南宁市',
# 柳州市
'城中区': '柳州市',
'鱼峰区': '柳州市',
'柳南区': '柳州市',
'柳北区': '柳州市',
'柳江区': '柳州市',
'柳城县': '柳州市',
'鹿寨县': '柳州市',
'融安县': '柳州市',
'融水苗族自治县': '柳州市',
'三江侗族自治县': '柳州市',
# 桂林市
'秀峰区': '桂林市',
'叠彩区': '桂林市',
'象山区': '桂林市',
'七星区': '桂林市',
'雁山区': '桂林市',
'临桂区': '桂林市',
'阳朔县': '桂林市',
'灵川县': '桂林市',
'全州县': '桂林市',
'兴安县': '桂林市',
'永福县': '桂林市',
'灌阳县': '桂林市',
'龙胜各族自治县': '桂林市',
'资源县': '桂林市',
'平乐县': '桂林市',
'荔浦市': '桂林市',
'恭城瑶族自治县': '桂林市',
# 梧州市
'万秀区': '梧州市',
'长洲区': '梧州市',
'龙圩区': '梧州市',
'苍梧县': '梧州市',
'藤县': '梧州市',
'蒙山县': '梧州市',
'岑溪市': '梧州市',
# 北海市
'海城区': '北海市',
'银海区': '北海市',
'铁山港区': '北海市',
'合浦县': '北海市',
# 防城港市
'港口区': '防城港市',
'防城区': '防城港市',
'上思县': '防城港市',
'东兴市': '防城港市',
# 钦州市
'钦南区': '钦州市',
'钦北区': '钦州市',
'灵山县': '钦州市',
'浦北县': '钦州市',
# 贵港市
'港北区': '贵港市',
'港南区': '贵港市',
'覃塘区': '贵港市',
'平南县': '贵港市',
'桂平市': '贵港市',
# 玉林市
'玉州区': '玉林市',
'福绵区': '玉林市',
'容县': '玉林市',
'陆川县': '玉林市',
'博白县': '玉林市',
'兴业县': '玉林市',
'北流市': '玉林市',
# 百色市
'右江区': '百色市',
'田阳县': '百色市',
'田东县': '百色市',
'平果县': '百色市',
'德保县': '百色市',
'那坡县': '百色市',
'凌云县': '百色市',
'乐业县': '百色市',
'田林县': '百色市',
'西林县': '百色市',
'隆林各族自治县': '百色市',
'靖西市': '百色市',
# 贺州市
'八步区': '贺州市',
'平桂区': '贺州市',
'昭平县': '贺州市',
'钟山县': '贺州市',
'富川瑶族自治县': '贺州市',
# 河池市
'金城江区': '河池市',
'南丹县': '河池市',
'天峨县': '河池市',
'凤山县': '河池市',
'东兰县': '河池市',
'罗城仫佬族自治县': '河池市',
'环江毛南族自治县': '河池市',
'巴马瑶族自治县': '河池市',
'都安瑶族自治县': '河池市',
'大化瑶族自治县': '河池市',
'宜州市': '河池市',
# 来宾市
'兴宾区': '来宾市',
'忻城县': '来宾市',
'象州县': '来宾市',
'武宣县': '来宾市',
'金秀瑶族自治县': '来宾市',
'合山市': '来宾市',
# 崇左市
'江州区': '崇左市',
'扶绥县': '崇左市',
'宁明县': '崇左市',
'龙州县': '崇左市',
'大新县': '崇左市',
'天等县': '崇左市',
'凭祥市': '崇左市',
# 特殊值
'高新技术产业开发区': '南宁市',
'南宁经济技术开发区': '南宁市',
'东盟经济技术开发区': '南宁市',
'高新区': '南宁市',
'武鸣县': '南宁市',
'隆安': '南宁市',
'融水县': '柳州市',
'融安': '柳州市',
'柳江县': '柳州市',
'柳邕': '柳州市',
'平果': '百色市',
'田阳': '百色市',
'灵川': '桂林市',
'临桂': '桂林市',
'龙胜县': '桂林市',
'荔浦县': '桂林市',
'恭城县': '桂林市',
'巴马县': '河池市',
'罗城': '河池市',
'合浦': '北海市',
# 特殊值2
'科园西十路24号': '南宁市',
'科园东四路5号': '南宁市',
'秀安路13-11号': '南宁市',
'科园大道31号财智时代12楼': '南宁市',
'新兴工业园创业路6号': '柳州市',
'洛维工业集中区': '柳州市',
'中马产业园区': '钦州市',
'长安工业集中区': '桂林市',
'西江四路扶典上冲29号': '梧州市',
'田东石化工业': '百色市',
}
# 对每个县级行政区划进行处理
for county, city in county_to_city.items():
df = df.withColumn('地址', F.when(df['地址'].contains(county), city).otherwise(df['地址']))
df = df.withColumn("其中:出口总额", df["其中:出口总额"].cast("double"))
tax_sum_per_address = df.groupBy("地址").agg(sum("其中:出口总额").alias("总计出口总额")).orderBy("总计出口总额", ascending=False)
tax_sum_per_address = tax_sum_per_address.toPandas()
# 创建折线图
bar = (
Bar()
.add_xaxis(list(tax_sum_per_address["地址"]))
.add_yaxis("总计出口总额(亿元)", list(round(row / 100000, 3) for row in tax_sum_per_address["总计出口总额"]),
label_opts=opts.LabelOpts(position="inside"))
.set_global_opts(
toolbox_opts=opts.ToolboxOpts(orient="vertical", pos_top="50%", pos_left="95%"),
xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(interval=0))
)
.set_series_opts(
itemstyle_opts={"barBorderRadius": [5, 5, 5, 5], "barWidth": "30%"}, # 设置圆角和柱子宽度
label_opts=opts.LabelOpts(is_show=True, position="top", formatter="{c}"), # 显示数值,并设置标签位置和格式
)
)
# 渲染图表为 HTML 文件
# line.render("广西省出口榜.html")
return bar

@ -0,0 +1,203 @@
from pyecharts.charts import Bar, Pie
from pyspark.sql.functions import when, col
from pyecharts import options as opts
from pyspark.sql.functions import sum
from 大数据.读取Hbase函数 import HBaseDataLoading
def create_pie():
# 需要的列族:列限定符
column = ['info:地址', 'info:从业人员期末人数']
df = HBaseDataLoading(column)
# 广西的14个市级名称
cities = ['南宁市', '柳州市', '桂林市', '梧州市', '北海市', '防城港', '钦州市', '贵港市', '玉林市', '百色市',
'贺州市', '河池市', '来宾市', '崇左市']
# 对每个市进行处理
for city in cities:
df = df.withColumn('地址', when(df['地址'].contains(city[:-1]), city).otherwise(df['地址']))
# 广西的所有县级行政区划及其对应的市级行政区划
county_to_city = {
# 南宁市
'兴宁区': '南宁市',
'青秀区': '南宁市',
'江南区': '南宁市',
'西乡塘区': '南宁市',
'良庆区': '南宁市',
'邕宁区': '南宁市',
'武鸣区': '南宁市',
'隆安县': '南宁市',
'马山县': '南宁市',
'上林县': '南宁市',
'宾阳县': '南宁市',
'横县': '南宁市',
# 柳州市
'城中区': '柳州市',
'鱼峰区': '柳州市',
'柳南区': '柳州市',
'柳北区': '柳州市',
'柳江区': '柳州市',
'柳城县': '柳州市',
'鹿寨县': '柳州市',
'融安县': '柳州市',
'融水苗族自治县': '柳州市',
'三江侗族自治县': '柳州市',
# 桂林市
'秀峰区': '桂林市',
'叠彩区': '桂林市',
'象山区': '桂林市',
'七星区': '桂林市',
'雁山区': '桂林市',
'临桂区': '桂林市',
'阳朔县': '桂林市',
'灵川县': '桂林市',
'全州县': '桂林市',
'兴安县': '桂林市',
'永福县': '桂林市',
'灌阳县': '桂林市',
'龙胜各族自治县': '桂林市',
'资源县': '桂林市',
'平乐县': '桂林市',
'荔浦市': '桂林市',
'恭城瑶族自治县': '桂林市',
# 梧州市
'万秀区': '梧州市',
'长洲区': '梧州市',
'龙圩区': '梧州市',
'苍梧县': '梧州市',
'藤县': '梧州市',
'蒙山县': '梧州市',
'岑溪市': '梧州市',
# 北海市
'海城区': '北海市',
'银海区': '北海市',
'铁山港区': '北海市',
'合浦县': '北海市',
# 防城港市
'港口区': '防城港',
'防城区': '防城港',
'上思县': '防城港',
'东兴市': '防城港',
# 钦州市
'钦南区': '钦州市',
'钦北区': '钦州市',
'灵山县': '钦州市',
'浦北县': '钦州市',
# 贵港市
'港北区': '贵港市',
'港南区': '贵港市',
'覃塘区': '贵港市',
'平南县': '贵港市',
'桂平市': '贵港市',
# 玉林市
'玉州区': '玉林市',
'福绵区': '玉林市',
'容县': '玉林市',
'陆川县': '玉林市',
'博白县': '玉林市',
'兴业县': '玉林市',
'北流市': '玉林市',
# 百色市
'右江区': '百色市',
'田阳县': '百色市',
'田东县': '百色市',
'平果县': '百色市',
'德保县': '百色市',
'那坡县': '百色市',
'凌云县': '百色市',
'乐业县': '百色市',
'田林县': '百色市',
'西林县': '百色市',
'隆林各族自治县': '百色市',
'靖西市': '百色市',
# 贺州市
'八步区': '贺州市',
'平桂区': '贺州市',
'昭平县': '贺州市',
'钟山县': '贺州市',
'富川瑶族自治县': '贺州市',
# 河池市
'金城江区': '河池市',
'南丹县': '河池市',
'天峨县': '河池市',
'凤山县': '河池市',
'东兰县': '河池市',
'罗城仫佬族自治县': '河池市',
'环江毛南族自治县': '河池市',
'巴马瑶族自治县': '河池市',
'都安瑶族自治县': '河池市',
'大化瑶族自治县': '河池市',
'宜州市': '河池市',
# 来宾市
'兴宾区': '来宾市',
'忻城县': '来宾市',
'象州县': '来宾市',
'武宣县': '来宾市',
'金秀瑶族自治县': '来宾市',
'合山市': '来宾市',
# 崇左市
'江州区': '崇左市',
'扶绥县': '崇左市',
'宁明县': '崇左市',
'龙州县': '崇左市',
'大新县': '崇左市',
'天等县': '崇左市',
'凭祥市': '崇左市',
# 特殊值
'高新技术产业开发区': '南宁市',
'南宁经济技术开发区': '南宁市',
'东盟经济技术开发区': '南宁市',
'高新区': '南宁市',
'武鸣县': '南宁市',
'隆安': '南宁市',
'融水县': '柳州市',
'融安': '柳州市',
'柳江县': '柳州市',
'柳邕': '柳州市',
'平果': '百色市',
'田阳': '百色市',
'灵川': '桂林市',
'临桂': '桂林市',
'龙胜县': '桂林市',
'荔浦县': '桂林市',
'恭城县': '桂林市',
'巴马县': '河池市',
'罗城': '河池市',
'合浦': '北海市',
# 特殊值2
'科园西十路24号': '南宁市',
'科园东四路5号': '南宁市',
'秀安路13-11号': '南宁市',
'科园大道31号财智时代12楼': '南宁市',
'新兴工业园创业路6号': '柳州市',
'洛维工业集中区': '柳州市',
'中马产业园区': '钦州市',
'长安工业集中区': '桂林市',
'西江四路扶典上冲29号': '梧州市',
'田东石化工业': '百色市',
}
# 对每个县级行政区划进行处理
for county, city in county_to_city.items():
df = df.withColumn('地址', when(df['地址'].contains(county), city).otherwise(df['地址']))
df = df.withColumn("从业人员期末人数", df["从业人员期末人数"].cast("int"))
tax_sum_per_address = df.groupBy("地址").agg(sum("从业人员期末人数").alias("从业人员期末人数")).orderBy("从业人员期末人数", ascending=False)
tax_sum_per_address = tax_sum_per_address.toPandas()
pie = (
Pie()
.add("", [list(z) for z in zip(tax_sum_per_address["地址"], tax_sum_per_address["从业人员期末人数"])],
radius=["5%", "25%"], # 设置内外半径
center=["75%", "620px"], # 设置饼图的中心位置
rosetype="radius", # 设置为半径模式
label_opts=opts.LabelOpts(formatter="{b}: {c}"))
# .set_global_opts(
# toolbox_opts=opts.ToolboxOpts(orient="vertical", pos_top="50%", pos_left="95%"),
# legend_opts=opts.LegendOpts(pos_top="95%"), # 设置图例的垂直位置
# )
)
return pie

@ -0,0 +1,214 @@
from pyecharts.charts import Bar
from pyspark.sql.functions import when, col
from pyecharts import options as opts
from pyspark.sql.functions import sum
from 大数据.读取Hbase函数 import HBaseDataLoading
def create_bar():
# 需要的列族:列限定符
column = ['info:地址', 'info:实际上缴税费总额']
df = HBaseDataLoading(column)
# 广西的14个市级名称
cities = ['南宁市', '柳州市', '桂林市', '梧州市', '北海市', '防城港市', '钦州市', '贵港市', '玉林市', '百色市',
'贺州市', '河池市', '来宾市', '崇左市']
# 对每个市进行处理
for city in cities:
df = df.withColumn('地址', when(df['地址'].contains(city[:-1]), city).otherwise(df['地址']))
# 广西的所有县级行政区划及其对应的市级行政区划
county_to_city = {
# 南宁市
'兴宁区': '南宁市',
'青秀区': '南宁市',
'江南区': '南宁市',
'西乡塘区': '南宁市',
'良庆区': '南宁市',
'邕宁区': '南宁市',
'武鸣区': '南宁市',
'隆安县': '南宁市',
'马山县': '南宁市',
'上林县': '南宁市',
'宾阳县': '南宁市',
'横县': '南宁市',
# 柳州市
'城中区': '柳州市',
'鱼峰区': '柳州市',
'柳南区': '柳州市',
'柳北区': '柳州市',
'柳江区': '柳州市',
'柳城县': '柳州市',
'鹿寨县': '柳州市',
'融安县': '柳州市',
'融水苗族自治县': '柳州市',
'三江侗族自治县': '柳州市',
# 桂林市
'秀峰区': '桂林市',
'叠彩区': '桂林市',
'象山区': '桂林市',
'七星区': '桂林市',
'雁山区': '桂林市',
'临桂区': '桂林市',
'阳朔县': '桂林市',
'灵川县': '桂林市',
'全州县': '桂林市',
'兴安县': '桂林市',
'永福县': '桂林市',
'灌阳县': '桂林市',
'龙胜各族自治县': '桂林市',
'资源县': '桂林市',
'平乐县': '桂林市',
'荔浦市': '桂林市',
'恭城瑶族自治县': '桂林市',
# 梧州市
'万秀区': '梧州市',
'长洲区': '梧州市',
'龙圩区': '梧州市',
'苍梧县': '梧州市',
'藤县': '梧州市',
'蒙山县': '梧州市',
'岑溪市': '梧州市',
# 北海市
'海城区': '北海市',
'银海区': '北海市',
'铁山港区': '北海市',
'合浦县': '北海市',
# 防城港市
'港口区': '防城港市',
'防城区': '防城港市',
'上思县': '防城港市',
'东兴市': '防城港市',
# 钦州市
'钦南区': '钦州市',
'钦北区': '钦州市',
'灵山县': '钦州市',
'浦北县': '钦州市',
# 贵港市
'港北区': '贵港市',
'港南区': '贵港市',
'覃塘区': '贵港市',
'平南县': '贵港市',
'桂平市': '贵港市',
# 玉林市
'玉州区': '玉林市',
'福绵区': '玉林市',
'容县': '玉林市',
'陆川县': '玉林市',
'博白县': '玉林市',
'兴业县': '玉林市',
'北流市': '玉林市',
# 百色市
'右江区': '百色市',
'田阳县': '百色市',
'田东县': '百色市',
'平果县': '百色市',
'德保县': '百色市',
'那坡县': '百色市',
'凌云县': '百色市',
'乐业县': '百色市',
'田林县': '百色市',
'西林县': '百色市',
'隆林各族自治县': '百色市',
'靖西市': '百色市',
# 贺州市
'八步区': '贺州市',
'平桂区': '贺州市',
'昭平县': '贺州市',
'钟山县': '贺州市',
'富川瑶族自治县': '贺州市',
# 河池市
'金城江区': '河池市',
'南丹县': '河池市',
'天峨县': '河池市',
'凤山县': '河池市',
'东兰县': '河池市',
'罗城仫佬族自治县': '河池市',
'环江毛南族自治县': '河池市',
'巴马瑶族自治县': '河池市',
'都安瑶族自治县': '河池市',
'大化瑶族自治县': '河池市',
'宜州市': '河池市',
# 来宾市
'兴宾区': '来宾市',
'忻城县': '来宾市',
'象州县': '来宾市',
'武宣县': '来宾市',
'金秀瑶族自治县': '来宾市',
'合山市': '来宾市',
# 崇左市
'江州区': '崇左市',
'扶绥县': '崇左市',
'宁明县': '崇左市',
'龙州县': '崇左市',
'大新县': '崇左市',
'天等县': '崇左市',
'凭祥市': '崇左市',
# 特殊值
'高新技术产业开发区': '南宁市',
'南宁经济技术开发区': '南宁市',
'东盟经济技术开发区': '南宁市',
'高新区': '南宁市',
'武鸣县': '南宁市',
'隆安': '南宁市',
'融水县': '柳州市',
'融安': '柳州市',
'柳江县': '柳州市',
'柳邕': '柳州市',
'平果': '百色市',
'田阳': '百色市',
'灵川': '桂林市',
'临桂': '桂林市',
'龙胜县': '桂林市',
'荔浦县': '桂林市',
'恭城县': '桂林市',
'巴马县': '河池市',
'罗城': '河池市',
'合浦': '北海市',
# 特殊值2
'科园西十路24号': '南宁市',
'科园东四路5号': '南宁市',
'秀安路13-11号': '南宁市',
'科园大道31号财智时代12楼': '南宁市',
'新兴工业园创业路6号': '柳州市',
'洛维工业集中区': '柳州市',
'中马产业园区': '钦州市',
'长安工业集中区': '桂林市',
'西江四路扶典上冲29号': '梧州市',
'田东石化工业': '百色市',
}
# 对每个县级行政区划进行处理
for county, city in county_to_city.items():
df = df.withColumn('地址', when(df['地址'].contains(county), city).otherwise(df['地址']))
# df.show()
# 将实际上缴税费总额列转为double
df = df.withColumn("实际上缴税费总额", df["实际上缴税费总额"].cast("double"))
tax_sum_per_address = df.groupBy("地址").agg(sum("实际上缴税费总额").alias("总计实际上缴税费总额")).orderBy("总计实际上缴税费总额", ascending=False)
# 转为Pandas
tax_sum_per_address = tax_sum_per_address.toPandas()
# 创建柱状图
bar = (
Bar()
.add_xaxis(list(tax_sum_per_address["地址"]))
.add_yaxis("总计缴税费总额(亿元)", list(round(row / 100000, 2) for row in tax_sum_per_address["总计实际上缴税费总额"]),
label_opts=opts.LabelOpts(position="inside"))
.set_global_opts(
toolbox_opts=opts.ToolboxOpts(orient="vertical", pos_top="50%", pos_left="95%"),
xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(interval=0))
)
.set_series_opts(
itemstyle_opts={"barBorderRadius": [5, 5, 5, 5], "barWidth": "30%"}, # 设置圆角和柱子宽度
label_opts=opts.LabelOpts(is_show=False, position="top", formatter="{c}"), # 显示数值,并设置标签位置和格式
)
)
# 渲染图表为 HTML 文件
# bar.render("广西省税收榜.html")
return bar

@ -0,0 +1,226 @@
from pyspark.sql import functions as F
from pyspark.sql.functions import split, concat, lit
from pyspark.sql.functions import length
from pyecharts.charts import Bar
from pyspark.sql.functions import when
from pyecharts import options as opts
from 大数据.读取Hbase函数 import HBaseDataLoading
def format_amount(amount):
return round(amount / 100000, 2)
def create_bar():
yy_column = ['info:地址', 'info:注册资金']
yy_df = HBaseDataLoading(yy_column)
# 处理---各个市企业总注册资金
cities = ['南宁市', '柳州市', '桂林市', '梧州市', '北海市', '防城港市', '钦州市', '贵港市', '玉林市', '百色市',
'贺州市', '河池市', '来宾市', '崇左市']
# 对每个市进行处理
for city in cities:
yy_df = yy_df.withColumn('地址', when(yy_df['地址'].contains(city[:-1]), city).otherwise(yy_df['地址']))
# 广西的所有县级行政区划及其对应的市级行政区划
county_to_city = {
# 南宁市
'兴宁区': '南宁市',
'青秀区': '南宁市',
'江南区': '南宁市',
'西乡塘区': '南宁市',
'良庆区': '南宁市',
'邕宁区': '南宁市',
'武鸣区': '南宁市',
'隆安县': '南宁市',
'马山县': '南宁市',
'上林县': '南宁市',
'宾阳县': '南宁市',
'横县': '南宁市',
# 柳州市
'城中区': '柳州市',
'鱼峰区': '柳州市',
'柳南区': '柳州市',
'柳北区': '柳州市',
'柳江区': '柳州市',
'柳城县': '柳州市',
'鹿寨县': '柳州市',
'融安县': '柳州市',
'融水苗族自治县': '柳州市',
'三江侗族自治县': '柳州市',
# 桂林市
'秀峰区': '桂林市',
'叠彩区': '桂林市',
'象山区': '桂林市',
'七星区': '桂林市',
'雁山区': '桂林市',
'临桂区': '桂林市',
'阳朔县': '桂林市',
'灵川县': '桂林市',
'全州县': '桂林市',
'兴安县': '桂林市',
'永福县': '桂林市',
'灌阳县': '桂林市',
'龙胜各族自治县': '桂林市',
'资源县': '桂林市',
'平乐县': '桂林市',
'荔浦市': '桂林市',
'恭城瑶族自治县': '桂林市',
# 梧州市
'万秀区': '梧州市',
'长洲区': '梧州市',
'龙圩区': '梧州市',
'苍梧县': '梧州市',
'藤县': '梧州市',
'蒙山县': '梧州市',
'岑溪市': '梧州市',
# 北海市
'海城区': '北海市',
'银海区': '北海市',
'铁山港区': '北海市',
'合浦县': '北海市',
# 防城港市
'港口区': '防城港市',
'防城区': '防城港市',
'上思县': '防城港市',
'东兴市': '防城港市',
# 钦州市
'钦南区': '钦州市',
'钦北区': '钦州市',
'灵山县': '钦州市',
'浦北县': '钦州市',
# 贵港市
'港北区': '贵港市',
'港南区': '贵港市',
'覃塘区': '贵港市',
'平南县': '贵港市',
'桂平市': '贵港市',
# 玉林市
'玉州区': '玉林市',
'福绵区': '玉林市',
'容县': '玉林市',
'陆川县': '玉林市',
'博白县': '玉林市',
'兴业县': '玉林市',
'北流市': '玉林市',
# 百色市
'右江区': '百色市',
'田阳县': '百色市',
'田东县': '百色市',
'平果县': '百色市',
'德保县': '百色市',
'那坡县': '百色市',
'凌云县': '百色市',
'乐业县': '百色市',
'田林县': '百色市',
'西林县': '百色市',
'隆林各族自治县': '百色市',
'靖西市': '百色市',
# 贺州市
'八步区': '贺州市',
'平桂区': '贺州市',
'昭平县': '贺州市',
'钟山县': '贺州市',
'富川瑶族自治县': '贺州市',
# 河池市
'金城江区': '河池市',
'南丹县': '河池市',
'天峨县': '河池市',
'凤山县': '河池市',
'东兰县': '河池市',
'罗城仫佬族自治县': '河池市',
'环江毛南族自治县': '河池市',
'巴马瑶族自治县': '河池市',
'都安瑶族自治县': '河池市',
'大化瑶族自治县': '河池市',
'宜州市': '河池市',
# 来宾市
'兴宾区': '来宾市',
'忻城县': '来宾市',
'象州县': '来宾市',
'武宣县': '来宾市',
'金秀瑶族自治县': '来宾市',
'合山市': '来宾市',
# 崇左市
'江州区': '崇左市',
'扶绥县': '崇左市',
'宁明县': '崇左市',
'龙州县': '崇左市',
'大新县': '崇左市',
'天等县': '崇左市',
'凭祥市': '崇左市',
# 特殊值
'高新技术产业开发区': '南宁市',
'南宁经济技术开发区': '南宁市',
'东盟经济技术开发区': '南宁市',
'高新区': '南宁市',
'武鸣县': '南宁市',
'隆安': '南宁市',
'融水县': '柳州市',
'融安': '柳州市',
'柳江县': '柳州市',
'柳邕': '柳州市',
'平果': '百色市',
'田阳': '百色市',
'灵川': '桂林市',
'临桂': '桂林市',
'龙胜县': '桂林市',
'荔浦县': '桂林市',
'恭城县': '桂林市',
'巴马县': '河池市',
'罗城': '河池市',
'合浦': '北海市',
# 特殊值2
'科园西十路24号': '南宁市',
'科园东四路5号': '南宁市',
'秀安路13-11号': '南宁市',
'科园大道31号财智时代12楼': '南宁市',
'新兴工业园创业路6号': '柳州市',
'洛维工业集中区': '柳州市',
'中马产业园区': '钦州市',
'长安工业集中区': '桂林市',
'西江四路扶典上冲29号': '梧州市',
'田东石化工业': '百色市',
}
# 对每个县级行政区划进行处理
for county, city in county_to_city.items():
yy_df = yy_df.withColumn('地址', when(yy_df['地址'].contains(county), city).otherwise(yy_df['地址']))
# 显示处理后的结果
# 假设你想按列名"column_name"进行分组,并对另一列"another_column"进行聚合操作(如求和)
yy_df = yy_df.groupBy("地址").agg(F.sum("注册资金").alias("注册资金"))
yy_df1 = yy_df.select("地址", "注册资金")
# 按照某个字段从高到低对数据进行排序
yy_df1 = yy_df1.orderBy(F.desc("注册资金"))
# 创建柱状图
# 提取企业注册地址数据并转换为列表
x_data = yy_df1.select('地址').toPandas()['地址'].tolist()
y_data = yy_df1.select('注册资金').toPandas()['注册资金'].tolist()
y_data = [format_amount(amount) for amount in y_data]
## 各市企业注册总资金可视化
bar = (
Bar()
.add_xaxis(x_data)
.add_yaxis("金额(亿元)", y_data)
# .set_series_opts(label_opts=opts.LabelOpts(formatter="{c}亿元")) # 设置y轴数据单位为万元
)
# 设置全局配置项
bar.set_global_opts(
xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(interval=0)), # 调整x轴标签间隔
)
return bar

@ -0,0 +1,213 @@
from pyspark.sql import functions as F
from pyecharts.charts import Bar
from pyspark.sql.functions import when
from pyecharts import options as opts
import pickle
from 大数据.读取Hbase函数 import HBaseDataLoading
def format_amount(amount):
return round(amount / 100000, 2)
def create_bar():
column = ['info:地址', 'info:营业收入']
df = HBaseDataLoading(column)
# 处理---各个市企业总注册资金
# 广西的14个市级名称
cities = ['南宁市', '柳州市', '桂林市', '梧州市', '北海市', '防城港市', '钦州市', '贵港市', '玉林市', '百色市',
'贺州市', '河池市', '来宾市', '崇左市']
# 对每个市进行处理
for city in cities:
df = df.withColumn('地址', when(df['地址'].contains(city[:-1]), city).otherwise(df['地址']))
# 广西的所有县级行政区划及其对应的市级行政区划
county_to_city = {
# 南宁市
'兴宁区': '南宁市',
'青秀区': '南宁市',
'江南区': '南宁市',
'西乡塘区': '南宁市',
'良庆区': '南宁市',
'邕宁区': '南宁市',
'武鸣区': '南宁市',
'隆安县': '南宁市',
'马山县': '南宁市',
'上林县': '南宁市',
'宾阳县': '南宁市',
'横县': '南宁市',
# 柳州市
'城中区': '柳州市',
'鱼峰区': '柳州市',
'柳南区': '柳州市',
'柳北区': '柳州市',
'柳江区': '柳州市',
'柳城县': '柳州市',
'鹿寨县': '柳州市',
'融安县': '柳州市',
'融水苗族自治县': '柳州市',
'三江侗族自治县': '柳州市',
# 桂林市
'秀峰区': '桂林市',
'叠彩区': '桂林市',
'象山区': '桂林市',
'七星区': '桂林市',
'雁山区': '桂林市',
'临桂区': '桂林市',
'阳朔县': '桂林市',
'灵川县': '桂林市',
'全州县': '桂林市',
'兴安县': '桂林市',
'永福县': '桂林市',
'灌阳县': '桂林市',
'龙胜各族自治县': '桂林市',
'资源县': '桂林市',
'平乐县': '桂林市',
'荔浦市': '桂林市',
'恭城瑶族自治县': '桂林市',
# 梧州市
'万秀区': '梧州市',
'长洲区': '梧州市',
'龙圩区': '梧州市',
'苍梧县': '梧州市',
'藤县': '梧州市',
'蒙山县': '梧州市',
'岑溪市': '梧州市',
# 北海市
'海城区': '北海市',
'银海区': '北海市',
'铁山港区': '北海市',
'合浦县': '北海市',
# 防城港市
'港口区': '防城港市',
'防城区': '防城港市',
'上思县': '防城港市',
'东兴市': '防城港市',
# 钦州市
'钦南区': '钦州市',
'钦北区': '钦州市',
'灵山县': '钦州市',
'浦北县': '钦州市',
# 贵港市
'港北区': '贵港市',
'港南区': '贵港市',
'覃塘区': '贵港市',
'平南县': '贵港市',
'桂平市': '贵港市',
# 玉林市
'玉州区': '玉林市',
'福绵区': '玉林市',
'容县': '玉林市',
'陆川县': '玉林市',
'博白县': '玉林市',
'兴业县': '玉林市',
'北流市': '玉林市',
# 百色市
'右江区': '百色市',
'田阳县': '百色市',
'田东县': '百色市',
'平果县': '百色市',
'德保县': '百色市',
'那坡县': '百色市',
'凌云县': '百色市',
'乐业县': '百色市',
'田林县': '百色市',
'西林县': '百色市',
'隆林各族自治县': '百色市',
'靖西市': '百色市',
# 贺州市
'八步区': '贺州市',
'平桂区': '贺州市',
'昭平县': '贺州市',
'钟山县': '贺州市',
'富川瑶族自治县': '贺州市',
# 河池市
'金城江区': '河池市',
'南丹县': '河池市',
'天峨县': '河池市',
'凤山县': '河池市',
'东兰县': '河池市',
'罗城仫佬族自治县': '河池市',
'环江毛南族自治县': '河池市',
'巴马瑶族自治县': '河池市',
'都安瑶族自治县': '河池市',
'大化瑶族自治县': '河池市',
'宜州市': '河池市',
# 来宾市
'兴宾区': '来宾市',
'忻城县': '来宾市',
'象州县': '来宾市',
'武宣县': '来宾市',
'金秀瑶族自治县': '来宾市',
'合山市': '来宾市',
# 崇左市
'江州区': '崇左市',
'扶绥县': '崇左市',
'宁明县': '崇左市',
'龙州县': '崇左市',
'大新县': '崇左市',
'天等县': '崇左市',
'凭祥市': '崇左市',
# 特殊值
'高新技术产业开发区': '南宁市',
'南宁经济技术开发区': '南宁市',
'东盟经济技术开发区': '南宁市',
'高新区': '南宁市',
'武鸣县': '南宁市',
'隆安': '南宁市',
'融水县': '柳州市',
'融安': '柳州市',
'柳江县': '柳州市',
'柳邕': '柳州市',
'平果': '百色市',
'田阳': '百色市',
'灵川': '桂林市',
'临桂': '桂林市',
'龙胜县': '桂林市',
'荔浦县': '桂林市',
'恭城县': '桂林市',
'巴马县': '河池市',
'罗城': '河池市',
'合浦': '北海市',
# 特殊值2
'科园西十路24号': '南宁市',
'科园东四路5号': '南宁市',
'秀安路13-11号': '南宁市',
'科园大道31号财智时代12楼': '南宁市',
'新兴工业园创业路6号': '柳州市',
'洛维工业集中区': '柳州市',
'中马产业园区': '钦州市',
'长安工业集中区': '桂林市',
'西江四路扶典上冲29号': '梧州市',
'田东石化工业': '百色市',
}
# 对每个县级行政区划进行处理
for county, city in county_to_city.items():
df = df.withColumn('地址', when(df['地址'].contains(county), city).otherwise(df['地址']))
# 显示处理后的结果
# 假设你想按列名"column_name"进行分组,并对另一列"another_column"进行聚合操作(如求和)
df = df.groupBy("地址").agg(F.sum("营业收入").alias("营业收入"))
# 按照某个字段从高到低对数据进行排序
df = df.orderBy(F.desc("营业收入"))
pandas_df = df.toPandas()
x_city_data = pandas_df['地址'].tolist()
y_mony_data = pandas_df['营业收入'].tolist()
y_mony_data = [format_amount(amount) for amount in y_mony_data]
bar = (
Bar()
.add_xaxis(x_city_data)
.add_yaxis("金额(亿元)", y_mony_data)
# .set_series_opts(label_opts=opts.LabelOpts(formatter="{c}万")) # 设置y轴数据单位为万元
.set_global_opts(xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(interval=0)))
)
# bar.render("各市企业营业收入总资金.html")
# with open('./Output/各市企业营业收入总资金.pkl', 'wb') as f2:
# pickle.dump(bar, f2)
return bar

@ -0,0 +1,224 @@
from pyecharts.charts import Bar
from pyecharts import options as opts
from pyspark.sql.functions import when
import random
from 大数据.读取Hbase函数 import HBaseDataLoading
def create_line():
column = ['info:地址', 'info:注册时间']
df = HBaseDataLoading(column)
# 广西的14个市级名称
cities = ['南宁市', '柳州市', '桂林市', '梧州市', '北海市', '防城港市', '钦州市', '贵港市', '玉林市', '百色市',
'贺州市', '河池市', '来宾市', '崇左市']
# 对每个市进行处理
for city in cities:
df = df.withColumn('地址', when(df['地址'].contains(city[:-1]), city).otherwise(df['地址']))
# 广西的所有县级行政区划及其对应的市级行政区划
county_to_city = {
# 南宁市
'兴宁区': '南宁市',
'青秀区': '南宁市',
'江南区': '南宁市',
'西乡塘区': '南宁市',
'良庆区': '南宁市',
'邕宁区': '南宁市',
'武鸣区': '南宁市',
'隆安县': '南宁市',
'马山县': '南宁市',
'上林县': '南宁市',
'宾阳县': '南宁市',
'横县': '南宁市',
# 柳州市
'城中区': '柳州市',
'鱼峰区': '柳州市',
'柳南区': '柳州市',
'柳北区': '柳州市',
'柳江区': '柳州市',
'柳城县': '柳州市',
'鹿寨县': '柳州市',
'融安县': '柳州市',
'融水苗族自治县': '柳州市',
'三江侗族自治县': '柳州市',
# 桂林市
'秀峰区': '桂林市',
'叠彩区': '桂林市',
'象山区': '桂林市',
'七星区': '桂林市',
'雁山区': '桂林市',
'临桂区': '桂林市',
'阳朔县': '桂林市',
'灵川县': '桂林市',
'全州县': '桂林市',
'兴安县': '桂林市',
'永福县': '桂林市',
'灌阳县': '桂林市',
'龙胜各族自治县': '桂林市',
'资源县': '桂林市',
'平乐县': '桂林市',
'荔浦市': '桂林市',
'恭城瑶族自治县': '桂林市',
# 梧州市
'万秀区': '梧州市',
'长洲区': '梧州市',
'龙圩区': '梧州市',
'苍梧县': '梧州市',
'藤县': '梧州市',
'蒙山县': '梧州市',
'岑溪市': '梧州市',
# 北海市
'海城区': '北海市',
'银海区': '北海市',
'铁山港区': '北海市',
'合浦县': '北海市',
# 防城港市
'港口区': '防城港市',
'防城区': '防城港市',
'上思县': '防城港市',
'东兴市': '防城港市',
# 钦州市
'钦南区': '钦州市',
'钦北区': '钦州市',
'灵山县': '钦州市',
'浦北县': '钦州市',
# 贵港市
'港北区': '贵港市',
'港南区': '贵港市',
'覃塘区': '贵港市',
'平南县': '贵港市',
'桂平市': '贵港市',
# 玉林市
'玉州区': '玉林市',
'福绵区': '玉林市',
'容县': '玉林市',
'陆川县': '玉林市',
'博白县': '玉林市',
'兴业县': '玉林市',
'北流市': '玉林市',
# 百色市
'右江区': '百色市',
'田阳县': '百色市',
'田东县': '百色市',
'平果县': '百色市',
'德保县': '百色市',
'那坡县': '百色市',
'凌云县': '百色市',
'乐业县': '百色市',
'田林县': '百色市',
'西林县': '百色市',
'隆林各族自治县': '百色市',
'靖西市': '百色市',
# 贺州市
'八步区': '贺州市',
'平桂区': '贺州市',
'昭平县': '贺州市',
'钟山县': '贺州市',
'富川瑶族自治县': '贺州市',
# 河池市
'金城江区': '河池市',
'南丹县': '河池市',
'天峨县': '河池市',
'凤山县': '河池市',
'东兰县': '河池市',
'罗城仫佬族自治县': '河池市',
'环江毛南族自治县': '河池市',
'巴马瑶族自治县': '河池市',
'都安瑶族自治县': '河池市',
'大化瑶族自治县': '河池市',
'宜州市': '河池市',
# 来宾市
'兴宾区': '来宾市',
'忻城县': '来宾市',
'象州县': '来宾市',
'武宣县': '来宾市',
'金秀瑶族自治县': '来宾市',
'合山市': '来宾市',
# 崇左市
'江州区': '崇左市',
'扶绥县': '崇左市',
'宁明县': '崇左市',
'龙州县': '崇左市',
'大新县': '崇左市',
'天等县': '崇左市',
'凭祥市': '崇左市',
# 特殊值
'高新技术产业开发区': '南宁市',
'南宁经济技术开发区': '南宁市',
'东盟经济技术开发区': '南宁市',
'高新区': '南宁市',
'武鸣县': '南宁市',
'隆安': '南宁市',
'融水县': '柳州市',
'融安': '柳州市',
'柳江县': '柳州市',
'柳邕': '柳州市',
'平果': '百色市',
'田阳': '百色市',
'灵川': '桂林市',
'临桂': '桂林市',
'龙胜县': '桂林市',
'荔浦县': '桂林市',
'恭城县': '桂林市',
'巴马县': '河池市',
'罗城': '河池市',
'合浦': '北海市',
# 特殊值2
'科园西十路24号': '南宁市',
'科园东四路5号': '南宁市',
'秀安路13-11号': '南宁市',
'科园大道31号财智时代12楼': '南宁市',
'新兴工业园创业路6号': '柳州市',
'洛维工业集中区': '柳州市',
'中马产业园区': '钦州市',
'长安工业集中区': '桂林市',
'西江四路扶典上冲29号': '梧州市',
'田东石化工业': '百色市',
}
# 对每个县级行政区划进行处理
for county, city in county_to_city.items():
df = df.withColumn('地址', when(df['地址'].contains(county), city).otherwise(df['地址']))
df = df.filter(df["注册时间"] >= 2008)
# 聚合处理数据
df = df.groupBy("地址").pivot("注册时间").count()
df = df.fillna(0)
df = df.withColumn("sum", sum(df[col] for col in df.columns[1:]))
df = df.orderBy(df["sum"])
# 转换为Pandas
citys = df.select('地址').toPandas()['地址'].tolist()
df = df.drop("地址")
df = df.drop("sum")
years = df.columns
data = []
for row in df.rdd.collect():
t = row.asDict()
curr = []
for k, v in t.items():
curr.append(v)
data.append(curr)
bar = stacked_bar(years, citys, data)
return bar
def stacked_bar(years,cities,data) -> Bar:
bar = (
Bar()
.add_xaxis(cities)
)
# 添加每年的数据
for i, year in enumerate(years):
bar.add_yaxis(year, [data[j][i] for j in range(len(cities))], stack = "stack1")
bar.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
bar.set_global_opts(xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(interval=0)))
return bar

@ -0,0 +1,58 @@
from pyspark.sql import functions as F
from pyecharts.charts import Pie
from pyecharts import options as opts
from pyecharts.commons.utils import JsCode
import pickle
from 大数据.读取Hbase函数 import HBaseDataLoading
def create_pie():
# 需要的列族:列限定符
column = ['info:地址', 'info:主要外资来源国别或地区代码', 'info:主要外资出资比例']
df = HBaseDataLoading(column)
# 过滤出"主要外资来源国别或地区代码"列不为0的行
df_filtered = df.filter(F.col("主要外资来源国别或地区代码") != 0)
# 将Spark DataFrame转换为Pandas DataFrame
pandas_df = df_filtered.toPandas()
# 计算每个主要外资来源国别或地区代码的频次
country_counts = pandas_df['主要外资来源国别或地区代码'].value_counts()
print(country_counts)
# 可视化
# 创建Pie对象
pie = Pie()
# 创建字典,键是主要外资来源国别或地区代码,值是一个包含所有地址:主要外资出资比例的列表
tooltip_dict = pandas_df.groupby('主要外资来源国别或地区代码').apply(
lambda x: x[['地址', '主要外资出资比例']].values.tolist()).to_dict()
# 创建一个JavaScript函数这个函数会根据当前的主要外资来源国别或地区代码来生成一个包含所有地址:主要外资出资比例的字符串
js_func = """
function (params) {{
var data = {0};
var country_code = params.name;
var tooltip_str = '';
for (var i = 0; i < data[country_code].length; i++) {{
tooltip_str += '地址: ' + data[country_code][i][0] + ', 主要外资出资比例: ' + data[country_code][i][1] + '<br>';
}}
return tooltip_str;
}}
""".format(tooltip_dict)
# 添加数据主要外资来源国别或地区代码作为x轴频次作为y轴
pie.add(
"",
[list(z) for z in zip(country_counts.index.tolist(), country_counts.tolist())],
radius=["10%", "20%"], # 控制内外半径,即图的大小
center=["75%", "220px"], # 饼图中心的位置,即整个图的位置。格式:[左右,上下]
)
# 设置系列配置项
pie.set_series_opts(tooltip_opts=opts.TooltipOpts(formatter=JsCode(js_func)),
label_opts=opts.LabelOpts(formatter="{b}: {d}%"))
return pie

@ -0,0 +1,219 @@
from pyspark.sql import functions as F
from pyspark.sql.functions import when
from pyecharts import options as opts
from pyecharts.charts import Bar
from 大数据.读取Hbase函数 import HBaseDataLoading
def create_bar():
# 需要的列族:列限定符
column = ['info:地址', 'info:其中:研发、试验检验费', 'info:其中:技术(研究)开发费', 'info:其中:支付科研人员的工资及福利费']
df = HBaseDataLoading(column)
# 广西的14个市级名称
cities = ['南宁市', '柳州市', '桂林市', '梧州市', '北海市', '防城港市', '钦州市', '贵港市', '玉林市', '百色市',
'贺州市', '河池市', '来宾市', '崇左市']
# 对每个市进行处理
for city in cities:
df = df.withColumn('地址', when(df['地址'].contains(city[:-1]), city).otherwise(df['地址']))
# 广西的所有县级行政区划及其对应的市级行政区划
county_to_city = {
# 南宁市
'兴宁区': '南宁市',
'青秀区': '南宁市',
'江南区': '南宁市',
'西乡塘区': '南宁市',
'良庆区': '南宁市',
'邕宁区': '南宁市',
'武鸣区': '南宁市',
'隆安县': '南宁市',
'马山县': '南宁市',
'上林县': '南宁市',
'宾阳县': '南宁市',
'横县': '南宁市',
# 柳州市
'城中区': '柳州市',
'鱼峰区': '柳州市',
'柳南区': '柳州市',
'柳北区': '柳州市',
'柳江区': '柳州市',
'柳城县': '柳州市',
'鹿寨县': '柳州市',
'融安县': '柳州市',
'融水苗族自治县': '柳州市',
'三江侗族自治县': '柳州市',
# 桂林市
'秀峰区': '桂林市',
'叠彩区': '桂林市',
'象山区': '桂林市',
'七星区': '桂林市',
'雁山区': '桂林市',
'临桂区': '桂林市',
'阳朔县': '桂林市',
'灵川县': '桂林市',
'全州县': '桂林市',
'兴安县': '桂林市',
'永福县': '桂林市',
'灌阳县': '桂林市',
'龙胜各族自治县': '桂林市',
'资源县': '桂林市',
'平乐县': '桂林市',
'荔浦市': '桂林市',
'恭城瑶族自治县': '桂林市',
# 梧州市
'万秀区': '梧州市',
'长洲区': '梧州市',
'龙圩区': '梧州市',
'苍梧县': '梧州市',
'藤县': '梧州市',
'蒙山县': '梧州市',
'岑溪市': '梧州市',
# 北海市
'海城区': '北海市',
'银海区': '北海市',
'铁山港区': '北海市',
'合浦县': '北海市',
# 防城港市
'港口区': '防城港市',
'防城区': '防城港市',
'上思县': '防城港市',
'东兴市': '防城港市',
# 钦州市
'钦南区': '钦州市',
'钦北区': '钦州市',
'灵山县': '钦州市',
'浦北县': '钦州市',
# 贵港市
'港北区': '贵港市',
'港南区': '贵港市',
'覃塘区': '贵港市',
'平南县': '贵港市',
'桂平市': '贵港市',
# 玉林市
'玉州区': '玉林市',
'福绵区': '玉林市',
'容县': '玉林市',
'陆川县': '玉林市',
'博白县': '玉林市',
'兴业县': '玉林市',
'北流市': '玉林市',
# 百色市
'右江区': '百色市',
'田阳县': '百色市',
'田东县': '百色市',
'平果县': '百色市',
'德保县': '百色市',
'那坡县': '百色市',
'凌云县': '百色市',
'乐业县': '百色市',
'田林县': '百色市',
'西林县': '百色市',
'隆林各族自治县': '百色市',
'靖西市': '百色市',
# 贺州市
'八步区': '贺州市',
'平桂区': '贺州市',
'昭平县': '贺州市',
'钟山县': '贺州市',
'富川瑶族自治县': '贺州市',
# 河池市
'金城江区': '河池市',
'南丹县': '河池市',
'天峨县': '河池市',
'凤山县': '河池市',
'东兰县': '河池市',
'罗城仫佬族自治县': '河池市',
'环江毛南族自治县': '河池市',
'巴马瑶族自治县': '河池市',
'都安瑶族自治县': '河池市',
'大化瑶族自治县': '河池市',
'宜州市': '河池市',
# 来宾市
'兴宾区': '来宾市',
'忻城县': '来宾市',
'象州县': '来宾市',
'武宣县': '来宾市',
'金秀瑶族自治县': '来宾市',
'合山市': '来宾市',
# 崇左市
'江州区': '崇左市',
'扶绥县': '崇左市',
'宁明县': '崇左市',
'龙州县': '崇左市',
'大新县': '崇左市',
'天等县': '崇左市',
'凭祥市': '崇左市',
# 特殊值
'高新技术产业开发区': '南宁市',
'南宁经济技术开发区': '南宁市',
'东盟经济技术开发区': '南宁市',
'高新区': '南宁市',
'武鸣县': '南宁市',
'隆安': '南宁市',
'融水县': '柳州市',
'融安': '柳州市',
'柳江县': '柳州市',
'柳邕': '柳州市',
'平果': '百色市',
'田阳': '百色市',
'灵川': '桂林市',
'临桂': '桂林市',
'龙胜县': '桂林市',
'荔浦县': '桂林市',
'恭城县': '桂林市',
'巴马县': '河池市',
'罗城': '河池市',
'合浦': '北海市',
# 特殊值2
'科园西十路24号': '南宁市',
'科园东四路5号': '南宁市',
'秀安路13-11号': '南宁市',
'科园大道31号财智时代12楼': '南宁市',
'新兴工业园创业路6号': '柳州市',
'洛维工业集中区': '柳州市',
'中马产业园区': '钦州市',
'长安工业集中区': '桂林市',
'西江四路扶典上冲29号': '梧州市',
'田东石化工业': '百色市',
}
# 对每个县级行政区划进行处理
for county, city in county_to_city.items():
df = df.withColumn('地址', when(df['地址'].contains(county), city).otherwise(df['地址']))
# 计算研发投入额
df = df.withColumn('研发投入额',
F.col('其中:研发、试验检验费') +
F.col('其中:技术(研究)开发费') +
F.col('其中:支付科研人员的工资及福利费'))
df_grouped = df.groupBy('地址').sum('研发投入额')
df_grouped = df_grouped.withColumn('sum(研发投入额)', F.round(F.col('sum(研发投入额)')).cast('integer'))
df_grouped = df_grouped.withColumnRenamed('sum(研发投入额)', '研发总投入额')
df_grouped_sorted = df_grouped.orderBy('研发总投入额')
# 将Spark DataFrame转换为Pandas DataFrame
pandas_df = df_grouped_sorted.toPandas()
# 重置索引并且让新的索引从1开始
pandas_df.index = range(1, len(pandas_df) + 1)
# 输出
print(pandas_df)
# 可视化处理
# 创建一个Bar对象
bar = Bar()
# 添加数据地址作为x轴研发总投入额作为y轴
bar.add_xaxis(pandas_df['地址'].tolist())
bar.add_yaxis("研发总投入额(亿元)", [round(amount / 100000, 3) for amount in pandas_df['研发总投入额'].tolist()])
# 设置全局配置项
bar.set_global_opts(
xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(interval=0)), # 调整x轴标签间隔
# xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-30)) # 旋转x轴标签
)
# 返回对象
return bar

@ -0,0 +1,225 @@
from pyspark.sql import functions as F
from pyecharts.charts import Line
from pyecharts import options as opts
from 大数据.读取Hbase函数 import HBaseDataLoading
def create_line():
# 需要的列族:列限定符
column = ['info:地址', 'info:其中:研发、试验检验费', 'info:其中:技术(研究)开发费', 'info:其中:支付科研人员的工资及福利费', 'info:营业成本']
df = HBaseDataLoading(column)
# 广西的14个市级名称
cities = ['南宁市', '柳州市', '桂林市', '梧州市', '北海市', '防城港市', '钦州市', '贵港市', '玉林市', '百色市',
'贺州市', '河池市', '来宾市', '崇左市']
# 对每个市进行处理
for city in cities:
df = df.withColumn('地址', F.when(df['地址'].contains(city[:-1]), city).otherwise(df['地址']))
# 对广西的所有县级行政区划及其对应的市级行政区划
county_to_city = {
# 南宁市
'兴宁区': '南宁市',
'青秀区': '南宁市',
'江南区': '南宁市',
'西乡塘区': '南宁市',
'良庆区': '南宁市',
'邕宁区': '南宁市',
'武鸣区': '南宁市',
'隆安县': '南宁市',
'马山县': '南宁市',
'上林县': '南宁市',
'宾阳县': '南宁市',
'横县': '南宁市',
# 柳州市
'城中区': '柳州市',
'鱼峰区': '柳州市',
'柳南区': '柳州市',
'柳北区': '柳州市',
'柳江区': '柳州市',
'柳城县': '柳州市',
'鹿寨县': '柳州市',
'融安县': '柳州市',
'融水苗族自治县': '柳州市',
'三江侗族自治县': '柳州市',
# 桂林市
'秀峰区': '桂林市',
'叠彩区': '桂林市',
'象山区': '桂林市',
'七星区': '桂林市',
'雁山区': '桂林市',
'临桂区': '桂林市',
'阳朔县': '桂林市',
'灵川县': '桂林市',
'全州县': '桂林市',
'兴安县': '桂林市',
'永福县': '桂林市',
'灌阳县': '桂林市',
'龙胜各族自治县': '桂林市',
'资源县': '桂林市',
'平乐县': '桂林市',
'荔浦市': '桂林市',
'恭城瑶族自治县': '桂林市',
# 梧州市
'万秀区': '梧州市',
'长洲区': '梧州市',
'龙圩区': '梧州市',
'苍梧县': '梧州市',
'藤县': '梧州市',
'蒙山县': '梧州市',
'岑溪市': '梧州市',
# 北海市
'海城区': '北海市',
'银海区': '北海市',
'铁山港区': '北海市',
'合浦县': '北海市',
# 防城港市
'港口区': '防城港市',
'防城区': '防城港市',
'上思县': '防城港市',
'东兴市': '防城港市',
# 钦州市
'钦南区': '钦州市',
'钦北区': '钦州市',
'灵山县': '钦州市',
'浦北县': '钦州市',
# 贵港市
'港北区': '贵港市',
'港南区': '贵港市',
'覃塘区': '贵港市',
'平南县': '贵港市',
'桂平市': '贵港市',
# 玉林市
'玉州区': '玉林市',
'福绵区': '玉林市',
'容县': '玉林市',
'陆川县': '玉林市',
'博白县': '玉林市',
'兴业县': '玉林市',
'北流市': '玉林市',
# 百色市
'右江区': '百色市',
'田阳县': '百色市',
'田东县': '百色市',
'平果县': '百色市',
'德保县': '百色市',
'那坡县': '百色市',
'凌云县': '百色市',
'乐业县': '百色市',
'田林县': '百色市',
'西林县': '百色市',
'隆林各族自治县': '百色市',
'靖西市': '百色市',
# 贺州市
'八步区': '贺州市',
'平桂区': '贺州市',
'昭平县': '贺州市',
'钟山县': '贺州市',
'富川瑶族自治县': '贺州市',
# 河池市
'金城江区': '河池市',
'南丹县': '河池市',
'天峨县': '河池市',
'凤山县': '河池市',
'东兰县': '河池市',
'罗城仫佬族自治县': '河池市',
'环江毛南族自治县': '河池市',
'巴马瑶族自治县': '河池市',
'都安瑶族自治县': '河池市',
'大化瑶族自治县': '河池市',
'宜州市': '河池市',
# 来宾市
'兴宾区': '来宾市',
'忻城县': '来宾市',
'象州县': '来宾市',
'武宣县': '来宾市',
'金秀瑶族自治县': '来宾市',
'合山市': '来宾市',
# 崇左市
'江州区': '崇左市',
'扶绥县': '崇左市',
'宁明县': '崇左市',
'龙州县': '崇左市',
'大新县': '崇左市',
'天等县': '崇左市',
'凭祥市': '崇左市',
# 特殊值
'高新技术产业开发区': '南宁市',
'南宁经济技术开发区': '南宁市',
'东盟经济技术开发区': '南宁市',
'高新区': '南宁市',
'武鸣县': '南宁市',
'隆安': '南宁市',
'融水县': '柳州市',
'融安': '柳州市',
'柳江县': '柳州市',
'柳邕': '柳州市',
'平果': '百色市',
'田阳': '百色市',
'灵川': '桂林市',
'临桂': '桂林市',
'龙胜县': '桂林市',
'荔浦县': '桂林市',
'恭城县': '桂林市',
'巴马县': '河池市',
'罗城': '河池市',
'合浦': '北海市',
# 特殊值2
'科园西十路24号': '南宁市',
'科园东四路5号': '南宁市',
'秀安路13-11号': '南宁市',
'科园大道31号财智时代12楼': '南宁市',
'新兴工业园创业路6号': '柳州市',
'洛维工业集中区': '柳州市',
'中马产业园区': '钦州市',
'长安工业集中区': '桂林市',
'西江四路扶典上冲29号': '梧州市',
'田东石化工业': '百色市',
}
# 对每个县级行政区划进行处理
for county, city in county_to_city.items():
df = df.withColumn('地址', F.when(df['地址'].contains(county), city).otherwise(df['地址']))
# 计算研发投入额
df = df.withColumn('研发投入额',
F.col('其中:研发、试验检验费') +
F.col('其中:技术(研究)开发费') +
F.col('其中:支付科研人员的工资及福利费'))
df_grouped = df.groupBy('地址').agg({"研发投入额": "sum", "营业成本": "sum"})
# 取整
df_grouped = df_grouped.withColumn('sum(研发投入额)', F.round(F.col('sum(研发投入额)')).cast('integer'))
df_grouped = df_grouped.withColumn('sum(营业成本)', F.round(F.col('sum(营业成本)')).cast('integer'))
# 创建"研发投入比"
df_grouped = df_grouped.withColumn("研发投入比(%)",
F.round(F.col('sum(研发投入额)') / F.col('sum(营业成本)') * 100, 2))
# 排序
# df_grouped_sorted = df_grouped.orderBy('研发投入比(%)')
# 将Spark DataFrame转换为Pandas DataFrame
pandas_df = df_grouped.toPandas()
# 重置索引并且让新的索引从1开始
pandas_df.index = range(1, len(pandas_df) + 1)
# 输出数据
print(pandas_df)
# 可视化处理
# 创建Line对象
line = Line()
# 添加数据地址作为x轴研发投入比作为y轴
line.add_xaxis(pandas_df['地址'].tolist())
line.add_yaxis("研发投入比(%)", pandas_df['研发投入比(%)'].tolist())
# 设置全局配置项
line.set_global_opts(
xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(interval=0)), # 调整x轴标签间隔
# xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-30)) # 旋转x轴标签
)
# 返回对象
return line

@ -0,0 +1,261 @@
from pyspark.sql import functions as F
from pyspark.sql.functions import when
from pyecharts.charts import Bar
from pyecharts.charts import Line
from pyecharts import options as opts
from 大数据.读取Hbase函数 import HBaseDataLoading
def create_line_bar():
# 需要的列族:列限定符
column = ['info:地址', 'info:本公司是否为上市(挂牌)企业主体', 'info:工业总产值(当年价格)', 'info:从业人员期末人数',
'info:其中:博士', 'info:其中:硕士', 'info:具有大学本科学历(位)人员', 'info:具有大学专科学历人员']
df = HBaseDataLoading(column)
# 过滤出"主要外资来源国别或地区代码"列不为空的行
# df = df.filter(F.col("本公司是否为上市(挂牌)企业主体") != 0)
# 上市公司数量
# print(df.count())
# 广西的14个市级名称
cities = ['南宁市', '柳州市', '桂林市', '梧州市', '北海市', '防城港市', '钦州市', '贵港市', '玉林市', '百色市',
'贺州市', '河池市', '来宾市', '崇左市']
# 对每个市进行处理
for city in cities:
df = df.withColumn('地址', when(df['地址'].contains(city[:-1]), city).otherwise(df['地址']))
# 广西的所有县级行政区划及其对应的市级行政区划
county_to_city = {
# 南宁市
'兴宁区': '南宁市',
'青秀区': '南宁市',
'江南区': '南宁市',
'西乡塘区': '南宁市',
'良庆区': '南宁市',
'邕宁区': '南宁市',
'武鸣区': '南宁市',
'隆安县': '南宁市',
'马山县': '南宁市',
'上林县': '南宁市',
'宾阳县': '南宁市',
'横县': '南宁市',
# 柳州市
'城中区': '柳州市',
'鱼峰区': '柳州市',
'柳南区': '柳州市',
'柳北区': '柳州市',
'柳江区': '柳州市',
'柳城县': '柳州市',
'鹿寨县': '柳州市',
'融安县': '柳州市',
'融水苗族自治县': '柳州市',
'三江侗族自治县': '柳州市',
# 桂林市
'秀峰区': '桂林市',
'叠彩区': '桂林市',
'象山区': '桂林市',
'七星区': '桂林市',
'雁山区': '桂林市',
'临桂区': '桂林市',
'阳朔县': '桂林市',
'灵川县': '桂林市',
'全州县': '桂林市',
'兴安县': '桂林市',
'永福县': '桂林市',
'灌阳县': '桂林市',
'龙胜各族自治县': '桂林市',
'资源县': '桂林市',
'平乐县': '桂林市',
'荔浦市': '桂林市',
'恭城瑶族自治县': '桂林市',
# 梧州市
'万秀区': '梧州市',
'长洲区': '梧州市',
'龙圩区': '梧州市',
'苍梧县': '梧州市',
'藤县': '梧州市',
'蒙山县': '梧州市',
'岑溪市': '梧州市',
# 北海市
'海城区': '北海市',
'银海区': '北海市',
'铁山港区': '北海市',
'合浦县': '北海市',
# 防城港市
'港口区': '防城港市',
'防城区': '防城港市',
'上思县': '防城港市',
'东兴市': '防城港市',
# 钦州市
'钦南区': '钦州市',
'钦北区': '钦州市',
'灵山县': '钦州市',
'浦北县': '钦州市',
# 贵港市
'港北区': '贵港市',
'港南区': '贵港市',
'覃塘区': '贵港市',
'平南县': '贵港市',
'桂平市': '贵港市',
# 玉林市
'玉州区': '玉林市',
'福绵区': '玉林市',
'容县': '玉林市',
'陆川县': '玉林市',
'博白县': '玉林市',
'兴业县': '玉林市',
'北流市': '玉林市',
# 百色市
'右江区': '百色市',
'田阳县': '百色市',
'田东县': '百色市',
'平果县': '百色市',
'德保县': '百色市',
'那坡县': '百色市',
'凌云县': '百色市',
'乐业县': '百色市',
'田林县': '百色市',
'西林县': '百色市',
'隆林各族自治县': '百色市',
'靖西市': '百色市',
# 贺州市
'八步区': '贺州市',
'平桂区': '贺州市',
'昭平县': '贺州市',
'钟山县': '贺州市',
'富川瑶族自治县': '贺州市',
# 河池市
'金城江区': '河池市',
'南丹县': '河池市',
'天峨县': '河池市',
'凤山县': '河池市',
'东兰县': '河池市',
'罗城仫佬族自治县': '河池市',
'环江毛南族自治县': '河池市',
'巴马瑶族自治县': '河池市',
'都安瑶族自治县': '河池市',
'大化瑶族自治县': '河池市',
'宜州市': '河池市',
# 来宾市
'兴宾区': '来宾市',
'忻城县': '来宾市',
'象州县': '来宾市',
'武宣县': '来宾市',
'金秀瑶族自治县': '来宾市',
'合山市': '来宾市',
# 崇左市
'江州区': '崇左市',
'扶绥县': '崇左市',
'宁明县': '崇左市',
'龙州县': '崇左市',
'大新县': '崇左市',
'天等县': '崇左市',
'凭祥市': '崇左市',
# 特殊值
'高新技术产业开发区': '南宁市',
'南宁经济技术开发区': '南宁市',
'东盟经济技术开发区': '南宁市',
'高新区': '南宁市',
'武鸣县': '南宁市',
'隆安': '南宁市',
'融水县': '柳州市',
'融安': '柳州市',
'柳江县': '柳州市',
'柳邕': '柳州市',
'平果': '百色市',
'田阳': '百色市',
'灵川': '桂林市',
'临桂': '桂林市',
'龙胜县': '桂林市',
'荔浦县': '桂林市',
'恭城县': '桂林市',
'巴马县': '河池市',
'罗城': '河池市',
'合浦': '北海市',
# 特殊值2
'科园西十路24号': '南宁市',
'科园东四路5号': '南宁市',
'秀安路13-11号': '南宁市',
'科园大道31号财智时代12楼': '南宁市',
'新兴工业园创业路6号': '柳州市',
'洛维工业集中区': '柳州市',
'中马产业园区': '钦州市',
'长安工业集中区': '桂林市',
'西江四路扶典上冲29号': '梧州市',
'田东石化工业': '百色市',
}
# 对每个县级行政区划进行处理
for county, city in county_to_city.items():
df = df.withColumn('地址', when(df['地址'].contains(county), city).otherwise(df['地址']))
# 转成整型
df = df.withColumn("工业总产值(当年价格)", df["工业总产值(当年价格)"].cast('integer'))
# 按市分组,计算每个市的工业总产值和人员分布
df_grouped = df.groupBy('地址').agg(
{"工业总产值(当年价格)": "sum",
"从业人员期末人数": "sum",
"其中:博士": "sum",
"其中:硕士": "sum",
"具有大学本科学历(位)人员": "sum",
"具有大学专科学历人员": "sum"}
)
# 改名
df_grouped = df_grouped.withColumnRenamed('sum(工业总产值(当年价格))', '工业总产值')
df_grouped = df_grouped.withColumnRenamed('sum(从业人员期末人数)', '从业人员期末人数')
df_grouped = df_grouped.withColumnRenamed('sum(其中:博士)', '博士总数')
df_grouped = df_grouped.withColumnRenamed('sum(其中:硕士)', '硕士总数')
df_grouped = df_grouped.withColumnRenamed('sum(具有大学本科学历(位)人员)', '本科生总数')
df_grouped = df_grouped.withColumnRenamed('sum(具有大学专科学历人员)', '专科生总数')
# 排序
df_grouped_sorted1 = df_grouped.orderBy('工业总产值')
df_grouped_sorted2 = df_grouped.orderBy('从业人员期末人数')
# 输出
df_grouped.show()
# 可视化
# 提取x轴和y轴的数据
x_data = [row['地址'] for row in df_grouped_sorted1.collect()]
y_data = [round(row['工业总产值'] / 100000, 2) for row in df_grouped_sorted1.collect()]
x_data1 = [row['地址'] for row in df_grouped_sorted2.collect()]
y_data1 = [row['博士总数'] for row in df_grouped_sorted2.collect()]
y_data2 = [row['硕士总数'] for row in df_grouped_sorted2.collect()]
y_data3 = [row['本科生总数'] for row in df_grouped_sorted2.collect()]
y_data4 = [row['专科生总数'] for row in df_grouped_sorted2.collect()]
# 创建折线图
line = (
Line()
.add_xaxis(x_data)
.add_yaxis("工业总产值(亿元)", y_data)
.set_global_opts(
xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(interval=0)) # 调整x轴标签间隔)
)
)
# 创建柱状图
bar = (
Bar()
.add_xaxis(x_data1)
.add_yaxis("专科", y_data4, stack="stack1")
.add_yaxis("本科", y_data3, stack="stack1")
.add_yaxis("硕士", y_data2, stack="stack1")
.add_yaxis("博士", y_data1, stack="stack1")
.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
.set_global_opts(
xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(interval=0)) # 调整x轴标签间隔
# xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-30)) # 调整x轴标签角度
)
)
# 返回对象
return line, bar
if __name__ == "__main__":
create_line_bar()

Binary file not shown.

@ -0,0 +1,56 @@
import happybase
from pyspark.sql import SparkSession
# 连接到HBase
connection = happybase.Connection('192.168.142.144')
# 输出所有表名
print(connection.tables())
# 检查表是否存在
if b'mytest_table' in connection.tables():
# 如果表存在,删除表
connection.disable_table('mytest_table')
connection.delete_table('mytest_table')
# 创建表
connection.create_table(
'mytest_table',
{'info': dict(max_versions=10)}
)
# 获取表
table = connection.table('mytest_table')
# 创建Spark会话
spark = SparkSession.builder.appName("ExcelDataCleaning").master('local').getOrCreate()
# 读取CSV文件为Spark DataFrame
df = spark.read.csv("./Output/数据清洗结果.csv", header=True, inferSchema=True)
# 将Spark DataFrame转换为Pandas DataFrame
pd = df.toPandas()
# 将Pandas DataFrame的数据插入到HBase
for index, row in pd.iterrows():
data = {
f'info:{column}'.encode(): str(row[column]).encode() for column in row.index
}
table.put(str(row['序号']).encode(), data)
# 查询数据
# for key, data in table.scan():
# key = key.decode()
# data = {k.decode(): v.decode() for k, v in data.items()}
# print(key, data)
# 查询前20行数据
for i, (key, data) in enumerate(table.scan()):
if i >= 20:
break
key = key.decode()
data = {k.decode(): v.decode() for k, v in data.items()}
print(key, data)
# 关闭连接
connection.close()

@ -0,0 +1,70 @@
from pyecharts.charts import Grid
from pyecharts.globals import ThemeType
from pyecharts import options as opts
from 大数据.ZJS.各地市研发总投入 import create_bar as get_Bar1
from 大数据.ZJS.各地市研发投入比 import create_line as get_Line1
from 大数据.ZJS.各市企业工业总产值和人员分布 import create_line_bar as get_line_bar
from 大数据.PXX.各市企业平均净利润 import create_bar as get_Bar3
from 大数据.PXX.各市企业平均技术转让收入 import create_bar as get_Bar4
from 大数据.YY.各市企业注册总资金 import create_bar as get_Bar5
from 大数据.YX.广西省企业出口榜 import create_line as get_line3
# 获取可视化对象
bar1 = get_Bar1()
line1 = get_Line1()
line2, bar2 = get_line_bar()
bar3 = get_Bar3()
bar4 = get_Bar4()
bar5 = get_Bar5()
line3 = get_line3()
# 设置标题和图例的位置
bar1.set_global_opts(
title_opts=opts.TitleOpts(title="各市研发总投入额", pos_left="1%", pos_top="0px"),
legend_opts=opts.LegendOpts(pos_left="39.3%", pos_top="0px")
)
line1.set_global_opts(
title_opts=opts.TitleOpts(title="各市研发投入比(%)", pos_right="35%", pos_top="0px"),
legend_opts=opts.LegendOpts(pos_right="2%", pos_top="0px")
)
bar2.set_global_opts(
title_opts=opts.TitleOpts(title="各市企业的学历人员分布数量", pos_left="1%", pos_top="400px"),
legend_opts=opts.LegendOpts(pos_left="33.1%", pos_top="400px")
)
line2.set_global_opts(
title_opts=opts.TitleOpts(title="各市企业的工业总产值", pos_right="34%", pos_top="400px"),
legend_opts=opts.LegendOpts(pos_right="2%", pos_top="400px")
)
bar3.set_global_opts(
title_opts=opts.TitleOpts(title="各市企业平均净利润", pos_left="1%", pos_top="800px"),
legend_opts=opts.LegendOpts(pos_left="40.3%", pos_top="800px")
)
bar5.set_global_opts(
title_opts=opts.TitleOpts(title="各市企业注册总资金", pos_right="35%", pos_top="800px"),
legend_opts=opts.LegendOpts(pos_right="2%", pos_top="800px")
)
bar4.set_global_opts(
title_opts=opts.TitleOpts(title="各市企业平均技术转让收入", pos_left="1%", pos_top="1200px"),
legend_opts=opts.LegendOpts(pos_left="37.9%", pos_top="1200px")
)
line3.set_global_opts(
title_opts=opts.TitleOpts(title="广西省各市企业出口榜", pos_right="34%", pos_top="1200px"),
legend_opts=opts.LegendOpts(pos_right="2%", pos_top="1200px")
)
# 创建一个Grid对象
grid = Grid(init_opts=opts.InitOpts(theme=ThemeType.DARK, width='100%', height='1600px'))
# 将图表添加到Grid对象中分成两列
grid.add(bar1, grid_opts=opts.GridOpts(pos_left="5%", pos_right="50%", pos_top="50px", height='300px'))
grid.add(line1, grid_opts=opts.GridOpts(pos_left="55%", pos_right="2%", pos_top="50px", height='300px'))
grid.add(bar2, grid_opts=opts.GridOpts(pos_left="5%", pos_right="50%", pos_top="450px", height='300px'))
grid.add(line2, grid_opts=opts.GridOpts(pos_left="55%", pos_right="2%", pos_top="450px", height='300px'))
grid.add(bar3, grid_opts=opts.GridOpts(pos_left="5%", pos_right="50%", pos_top="850px", height='300px'))
grid.add(bar5, grid_opts=opts.GridOpts(pos_left="55%", pos_right="2%", pos_top="850px", height='300px'))
grid.add(bar4, grid_opts=opts.GridOpts(pos_left="5%", pos_right="50%", pos_top="1250px", height='300px'))
grid.add(line3, grid_opts=opts.GridOpts(pos_left="55%", pos_right="2%", pos_top="1250px", height='300px'))
# 渲染所有图表到一个HTML文件中
grid.render("./Output/图表1.html")

@ -0,0 +1,63 @@
from pyecharts.charts import Grid
from pyecharts.globals import ThemeType
from pyecharts import options as opts
from 大数据.YY.各市企业营业收入 import create_bar as get_Bar1
from 大数据.ZJS.企业主要外资来源国别或地区代码分布 import create_pie as get_pie1
from 大数据.YX.广西省企业税收榜 import create_bar as get_Bar2
from 大数据.YX.广西省企业就业榜 import create_pie as get_pie2
from 大数据.YY.截止2018年各市企业注册数量 import create_line as get_line2
# 获取可视化对象
bar1 = get_Bar1()
pie1 = get_pie1()
bar2 = get_Bar2()
pie2 = get_pie2()
line2 = get_line2()
# 设置标题和图例的位置
bar1.set_global_opts(
title_opts=opts.TitleOpts(title="各市企业营业收入总资金", pos_left="1%", pos_top="0px"),
legend_opts=opts.LegendOpts(pos_left="42.6%", pos_top="0px")
)
pie1.set_global_opts(
title_opts=opts.TitleOpts(title="主要外资来源国别或地区代码分布", pos_right="29%", pos_top="0px"),
# legend_opts=opts.LegendOpts(pos_right="2%", pos_top="25px")
legend_opts=opts.LegendOpts(
orient="vertical", # 设置图例的布局为垂直布局
pos_right="2%",
pos_top="25px"
)
)
bar2.set_global_opts(
title_opts=opts.TitleOpts(title="广西省各市企业税收榜", pos_left="1%", pos_top="400px"),
legend_opts=opts.LegendOpts(pos_left="39.7%", pos_top="400px")
)
pie2.set_global_opts(
title_opts=opts.TitleOpts(title="广西省各市企业就业人数分布", pos_right="31%", pos_top="400px"),
legend_opts=opts.LegendOpts(
orient="vertical", # 设置图例的布局为垂直布局
pos_right="2%",
pos_top="430px"
)
)
line2.set_global_opts(
title_opts=opts.TitleOpts(title="2008-2018年各市企业注册数量", pos_left="5%", pos_top="800px"),
legend_opts=opts.LegendOpts(pos_right="2%", pos_top="800px")
)
# 创建一个Grid对象
grid = Grid(init_opts=opts.InitOpts(theme=ThemeType.DARK, width='100%', height='1400px'))
# 将图表添加到Grid对象中分成两列
grid.add(bar1, grid_opts=opts.GridOpts(pos_left="5%", pos_right="50%", pos_top="50px", height='300px'))
grid.add(bar2, grid_opts=opts.GridOpts(pos_left="5%", pos_right="50%", pos_top="450px", height='300px'))
grid.add(line2, grid_opts=opts.GridOpts(pos_left="5%", pos_right="2%", pos_top="850px", height='500px'))
# 渲染pie
grid.add(pie1, grid_opts=opts.GridOpts(height='300px'))
grid.add(pie2, grid_opts=opts.GridOpts(pos_bottom="300px"))
# 渲染所有图表到一个HTML文件中
grid.render("./Output/图表2.html")

@ -0,0 +1,52 @@
import pandas
from pyspark.sql import SparkSession
from pyspark.sql import functions as F
# 读取Excel文件
excel_data = pandas.read_excel("dataExcel.xlsx")
# 将数据写入CSV文件
excel_data.to_csv("./Output/dataExcel.csv", index=False)
# 创建Spark会话
spark = SparkSession.builder.appName("ExcelDataCleaning").master('local').getOrCreate()
# 读取CSV文件为Spark DataFrame
df = spark.read.csv("./Output/dataExcel.csv", header=True, inferSchema=True)
# 创建一个新列作为行号
df = df.withColumn("row_id", F.monotonically_increasing_id())
# 过滤掉行号为1的行即第二行
df_without_second_row = df.filter(df.row_id != 1).drop("row_id")
df = df_without_second_row.filter(df.row_id != 0).drop("row_id")
# 需要的列名
df = df.select('序号', '地址', '企业注册地址', '注册资金', '注册时间', '营业收入', '营业成本', '净利润', '其中:研发、试验检验费', '其中:技术(研究)开发费', '其中:支付科研人员的工资及福利费', '其中:出口总额',
'主要业务活动或主要产品1', '主要外资来源国别或地区代码', '主要外资出资比例', '本公司是否为上市(挂牌)企业主体', '工业总产值(当年价格)', '实际上缴税费总额',
'从业人员期末人数', '其中:博士', '其中:硕士', '具有大学本科学历(位)人员', '具有大学专科学历人员', '企业被认定为高新技术企业的时间', '上市挂牌时间', '其中:技术转让收入')
# 输出列名
print(df.columns)
# 删除'地址'列为'qingxiubgs2014@sina.com'或null的行
df = df.filter((F.col('地址') != 'qingxiubgs2014@sina.com') & (F.col('地址').isNotNull()))
# 填充某列空值
df = df.fillna({'本公司是否为上市(挂牌)企业主体': '0'})
df = df.fillna({'主要业务活动或主要产品1': ''})
df = df.fillna({'主要外资来源国别或地区代码': '0'})
df = df.fillna({'上市挂牌时间': '0'})
# 去除重复项
df = df.dropDuplicates()
# 根据序号排序
df = df.withColumn('序号', F.round(F.col('序号')).cast('integer'))
df = df.orderBy('序号')
# 将Spark DataFrame转换为Pandas DataFrame
pd = df.toPandas()
# 将Pandas DataFrame保存为CSV文件
pd.to_csv('./Output/数据清洗结果.csv', index=False)

@ -0,0 +1,34 @@
import happybase
from pyspark.sql import SparkSession, Row
import os
def HBaseDataLoading(column):
# 指定python环境
os.environ['PYSPARK_PYTHON'] = 'D:\Program Files\Python37\python.exe'
# 创建Spark会话
spark = SparkSession.builder.appName("HBaseDataLoading").master('local').getOrCreate()
# 连接到HBase
connection = happybase.Connection('192.168.142.144')
# 获取表
table = connection.table('mytest_table')
# 定义列名
columns = column
# 查询数据
data = []
for key, row in table.scan(columns=[col.encode('utf-8') for col in columns]):
row_data = {col.replace('info:', ''): row[col.encode('utf-8')].decode() for col in columns}
row_data['序号'] = key.decode()
data.append(row_data)
# 关闭连接
connection.close()
# 将数据转换为Spark DataFrame
spark_df = spark.createDataFrame([Row(**{k: str(v) for k, v in i.items()}) for i in data])
return spark_df
Loading…
Cancel
Save