提交全部代码

master
namecky 11 months ago
commit df9dc5a50c

3
.idea/.gitignore vendored

@ -0,0 +1,3 @@
# Default ignored files
/shelf/
/workspace.xml

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

@ -0,0 +1,19 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="PyPep8Inspection" enabled="true" level="WEAK WARNING" enabled_by_default="true">
<option name="ignoredErrors">
<list>
<option value="E231" />
</list>
</option>
</inspection_tool>
<inspection_tool class="PyShadowingBuiltinsInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true">
<option name="ignoredNames">
<list>
<option value="map" />
</list>
</option>
</inspection_tool>
</profile>
</component>

@ -0,0 +1,6 @@
<component name="InspectionProjectProfileManager">
<settings>
<option name="USE_PROJECT_PROFILE" value="false" />
<version value="1.0" />
</settings>
</component>

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.11" project-jdk-type="Python SDK" />
</project>

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/Bigdata_Code04.iml" filepath="$PROJECT_DIR$/.idea/Bigdata_Code04.iml" />
</modules>
</component>
</project>

@ -0,0 +1,212 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Awesome-pyecharts</title>
<script type="text/javascript" src="https://assets.pyecharts.org/assets/v5/echarts.min.js"></script>
</head>
<body >
<div id="3ae0304c01ae4d98aae9b937b0062576" class="chart-container" style="width:100%; height:500px; "></div>
<script>
var chart_3ae0304c01ae4d98aae9b937b0062576 = echarts.init(
document.getElementById('3ae0304c01ae4d98aae9b937b0062576'), 'white', {renderer: 'canvas'});
var option_3ae0304c01ae4d98aae9b937b0062576 = {
"animation": true,
"animationThreshold": 2000,
"animationDuration": 1000,
"animationEasing": "cubicOut",
"animationDelay": 0,
"animationDurationUpdate": 300,
"animationEasingUpdate": "cubicOut",
"animationDelayUpdate": 0,
"aria": {
"enabled": false
},
"color": [
"#5470c6",
"#91cc75",
"#fac858",
"#ee6666",
"#73c0de",
"#3ba272",
"#fc8452",
"#9a60b4",
"#ea7ccc"
],
"series": [
{
"type": "bar",
"name": "\u4f01\u4e1a\u6570\u91cf\uff08\u4e2a\uff09",
"xAxisIndex": 0,
"yAxisIndex": 0,
"legendHoverLink": true,
"data": [
410,
318,
31,
213
],
"realtimeSort": false,
"showBackground": false,
"stackStrategy": "samesign",
"cursor": "pointer",
"barMinHeight": 0,
"barCategoryGap": "20%",
"barGap": "30%",
"large": false,
"largeThreshold": 400,
"seriesLayoutBy": "column",
"datasetIndex": 0,
"clip": true,
"zlevel": 0,
"z": 2,
"label": {
"show": true,
"margin": 8
}
}
],
"legend": [
{
"data": [
"\u4f01\u4e1a\u6570\u91cf\uff08\u4e2a\uff09"
],
"selected": {},
"show": true,
"padding": 5,
"itemGap": 10,
"itemWidth": 25,
"itemHeight": 14,
"backgroundColor": "transparent",
"borderColor": "#ccc",
"borderWidth": 1,
"borderRadius": 0,
"pageButtonItemGap": 5,
"pageButtonPosition": "end",
"pageFormatter": "{current}/{total}",
"pageIconColor": "#2f4554",
"pageIconInactiveColor": "#aaa",
"pageIconSize": 15,
"animationDurationUpdate": 800,
"selector": false,
"selectorPosition": "auto",
"selectorItemGap": 7,
"selectorButtonGap": 10,
"right": "30%",
"orient": "horizontal"
}
],
"tooltip": {
"show": true,
"trigger": "item",
"triggerOn": "mousemove|click",
"axisPointer": {
"type": "line"
},
"showContent": true,
"alwaysShowContent": false,
"showDelay": 0,
"hideDelay": 100,
"enterable": false,
"confine": false,
"appendToBody": false,
"transitionDuration": 0.4,
"textStyle": {
"fontSize": 14
},
"borderWidth": 0,
"padding": 5,
"order": "seriesAsc"
},
"xAxis": [
{
"show": true,
"scale": false,
"nameLocation": "end",
"nameGap": 15,
"gridIndex": 0,
"inverse": false,
"offset": 0,
"splitNumber": 5,
"minInterval": 0,
"splitLine": {
"show": true,
"lineStyle": {
"show": true,
"width": 1,
"opacity": 1,
"curveness": 0,
"type": "solid"
}
},
"data": [
"\u5357\u5b81\u5e02",
"\u67f3\u5dde\u5e02",
"\u5317\u6d77\u5e02",
"\u6842\u6797\u5e02"
]
}
],
"yAxis": [
{
"show": true,
"scale": false,
"nameLocation": "end",
"nameGap": 15,
"gridIndex": 0,
"inverse": false,
"offset": 0,
"splitNumber": 5,
"minInterval": 0,
"splitLine": {
"show": true,
"lineStyle": {
"show": true,
"width": 1,
"opacity": 1,
"curveness": 0,
"type": "solid"
}
}
}
],
"title": [
{
"show": true,
"text": "2018\u5e74\u5e7f\u897f\u9ad8\u65b0\u533a\u4f01\u4e1a\u6570\u91cf\u5730\u533a\u5206\u5e03\u56fe",
"target": "blank",
"subtarget": "blank",
"left": "30%",
"padding": 5,
"itemGap": 10,
"textAlign": "auto",
"textVerticalAlign": "auto",
"triggerEvent": false
}
],
"grid": [
{
"show": false,
"zlevel": 0,
"z": 2,
"left": "30%",
"top": "50px",
"right": "30%",
"bottom": "50px",
"containLabel": false,
"backgroundColor": "transparent",
"borderColor": "#ccc",
"borderWidth": 1,
"shadowOffsetX": 0,
"shadowOffsetY": 0
}
]
};
chart_3ae0304c01ae4d98aae9b937b0062576.setOption(option_3ae0304c01ae4d98aae9b937b0062576);
window.addEventListener('resize', function(){
chart_3ae0304c01ae4d98aae9b937b0062576.resize();
})
</script>
</body>
</html>

@ -0,0 +1,444 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Awesome-pyecharts</title>
<script type="text/javascript" src="https://assets.pyecharts.org/assets/v5/echarts.min.js"></script>
</head>
<body >
<div id="b9d7dc7de1554b2eb60696020b5f0eec" class="chart-container" style="width:100%; height:500px; "></div>
<script>
var chart_b9d7dc7de1554b2eb60696020b5f0eec = echarts.init(
document.getElementById('b9d7dc7de1554b2eb60696020b5f0eec'), 'white', {renderer: 'canvas'});
var option_b9d7dc7de1554b2eb60696020b5f0eec = {
"animation": true,
"animationThreshold": 2000,
"animationDuration": 1000,
"animationEasing": "cubicOut",
"animationDelay": 0,
"animationDurationUpdate": 300,
"animationEasingUpdate": "cubicOut",
"animationDelayUpdate": 0,
"aria": {
"enabled": false
},
"color": [
"#5470c6",
"#91cc75",
"#fac858",
"#ee6666",
"#73c0de",
"#3ba272",
"#fc8452",
"#9a60b4",
"#ea7ccc"
],
"series": [
{
"type": "bar",
"name": "\u7814\u53d1\u603b\u6295\u5165\u989d\uff08\u5343\u5143\uff09",
"xAxisIndex": 0,
"yAxisIndex": 0,
"legendHoverLink": true,
"data": [
198840,
253759,
336134,
388239,
450939,
689272,
701244,
705254,
1335012,
1369700,
1958071,
2607203,
7389684,
15953630
],
"realtimeSort": false,
"showBackground": false,
"stackStrategy": "samesign",
"cursor": "pointer",
"barMinHeight": 0,
"barCategoryGap": "20%",
"barGap": "30%",
"large": false,
"largeThreshold": 400,
"seriesLayoutBy": "column",
"datasetIndex": 0,
"clip": true,
"zlevel": 0,
"z": 2,
"label": {
"show": true,
"margin": 8
}
},
{
"type": "line",
"name": "\u7814\u53d1\u6295\u5165\u6bd4(%)",
"connectNulls": false,
"xAxisIndex": 1,
"yAxisIndex": 1,
"symbolSize": 4,
"showSymbol": true,
"smooth": false,
"clip": true,
"step": false,
"data": [
[
"\u5357\u5b81\u5e02",
5.54
],
[
"\u9632\u57ce\u6e2f\u5e02",
6.16
],
[
"\u767e\u8272\u5e02",
5.02
],
[
"\u7389\u6797\u5e02",
5.58
],
[
"\u6cb3\u6c60\u5e02",
3.76
],
[
"\u67f3\u5dde\u5e02",
8.11
],
[
"\u5d07\u5de6\u5e02",
5.74
],
[
"\u6765\u5bbe\u5e02",
3.24
],
[
"\u5317\u6d77\u5e02",
1.38
],
[
"\u6842\u6797\u5e02",
7.9
],
[
"\u94a6\u5dde\u5e02",
5.23
],
[
"\u8d35\u6e2f\u5e02",
6.02
],
[
"\u8d3a\u5dde\u5e02",
6.22
],
[
"\u68a7\u5dde\u5e02",
7.96
]
],
"hoverAnimation": true,
"label": {
"show": true,
"margin": 8
},
"logBase": 10,
"seriesLayoutBy": "column",
"lineStyle": {
"show": true,
"width": 1,
"opacity": 1,
"curveness": 0,
"type": "solid"
},
"areaStyle": {
"opacity": 0
},
"zlevel": 0,
"z": 0
}
],
"legend": [
{
"data": [
"\u7814\u53d1\u603b\u6295\u5165\u989d\uff08\u5343\u5143\uff09"
],
"selected": {},
"show": true,
"padding": 5,
"itemGap": 10,
"itemWidth": 25,
"itemHeight": 14,
"backgroundColor": "transparent",
"borderColor": "#ccc",
"borderWidth": 1,
"borderRadius": 0,
"pageButtonItemGap": 5,
"pageButtonPosition": "end",
"pageFormatter": "{current}/{total}",
"pageIconColor": "#2f4554",
"pageIconInactiveColor": "#aaa",
"pageIconSize": 15,
"animationDurationUpdate": 800,
"selector": false,
"selectorPosition": "auto",
"selectorItemGap": 7,
"selectorButtonGap": 10,
"left": "35%",
"orient": "horizontal"
},
{
"data": [
"\u7814\u53d1\u6295\u5165\u6bd4(%)"
],
"selected": {},
"show": true,
"padding": 5,
"itemGap": 10,
"itemWidth": 25,
"itemHeight": 14,
"backgroundColor": "transparent",
"borderColor": "#ccc",
"borderWidth": 1,
"borderRadius": 0,
"pageButtonItemGap": 5,
"pageButtonPosition": "end",
"pageFormatter": "{current}/{total}",
"pageIconColor": "#2f4554",
"pageIconInactiveColor": "#aaa",
"pageIconSize": 15,
"animationDurationUpdate": 800,
"selector": false,
"selectorPosition": "auto",
"selectorItemGap": 7,
"selectorButtonGap": 10,
"right": "5%",
"orient": "horizontal"
}
],
"tooltip": {
"show": true,
"trigger": "item",
"triggerOn": "mousemove|click",
"axisPointer": {
"type": "line"
},
"showContent": true,
"alwaysShowContent": false,
"showDelay": 0,
"hideDelay": 100,
"enterable": false,
"confine": false,
"appendToBody": false,
"transitionDuration": 0.4,
"textStyle": {
"fontSize": 14
},
"borderWidth": 0,
"padding": 5,
"order": "seriesAsc"
},
"xAxis": [
{
"show": true,
"scale": false,
"nameLocation": "end",
"nameGap": 15,
"gridIndex": 0,
"axisLabel": {
"show": true,
"margin": 8,
"interval": 0
},
"inverse": false,
"offset": 0,
"splitNumber": 5,
"minInterval": 0,
"splitLine": {
"show": true,
"lineStyle": {
"show": true,
"width": 1,
"opacity": 1,
"curveness": 0,
"type": "solid"
}
},
"data": [
"\u6765\u5bbe\u5e02",
"\u8d35\u6e2f\u5e02",
"\u8d3a\u5dde\u5e02",
"\u5d07\u5de6\u5e02",
"\u6cb3\u6c60\u5e02",
"\u5317\u6d77\u5e02",
"\u68a7\u5dde\u5e02",
"\u94a6\u5dde\u5e02",
"\u7389\u6797\u5e02",
"\u767e\u8272\u5e02",
"\u6842\u6797\u5e02",
"\u9632\u57ce\u6e2f\u5e02",
"\u5357\u5b81\u5e02",
"\u67f3\u5dde\u5e02"
]
},
{
"show": true,
"scale": false,
"nameLocation": "end",
"nameGap": 15,
"gridIndex": 1,
"axisLabel": {
"show": true,
"margin": 8,
"interval": 0
},
"inverse": false,
"offset": 0,
"splitNumber": 5,
"minInterval": 0,
"splitLine": {
"show": true,
"lineStyle": {
"show": true,
"width": 1,
"opacity": 1,
"curveness": 0,
"type": "solid"
}
},
"data": [
"\u5357\u5b81\u5e02",
"\u9632\u57ce\u6e2f\u5e02",
"\u767e\u8272\u5e02",
"\u7389\u6797\u5e02",
"\u6cb3\u6c60\u5e02",
"\u67f3\u5dde\u5e02",
"\u5d07\u5de6\u5e02",
"\u6765\u5bbe\u5e02",
"\u5317\u6d77\u5e02",
"\u6842\u6797\u5e02",
"\u94a6\u5dde\u5e02",
"\u8d35\u6e2f\u5e02",
"\u8d3a\u5dde\u5e02",
"\u68a7\u5dde\u5e02"
]
}
],
"yAxis": [
{
"show": true,
"scale": false,
"nameLocation": "end",
"nameGap": 15,
"gridIndex": 0,
"inverse": false,
"offset": 0,
"splitNumber": 5,
"minInterval": 0,
"splitLine": {
"show": true,
"lineStyle": {
"show": true,
"width": 1,
"opacity": 1,
"curveness": 0,
"type": "solid"
}
}
},
{
"show": true,
"scale": false,
"nameLocation": "end",
"nameGap": 15,
"gridIndex": 1,
"inverse": false,
"offset": 0,
"splitNumber": 5,
"minInterval": 0,
"splitLine": {
"show": true,
"lineStyle": {
"show": true,
"width": 1,
"opacity": 1,
"curveness": 0,
"type": "solid"
}
}
}
],
"title": [
{
"show": true,
"text": "2018\u5e74\u5e7f\u897f\u5404\u5730\u5e02\u7814\u53d1\u603b\u6295\u5165\u5bf9\u6bd4\u56fe",
"target": "blank",
"subtarget": "blank",
"left": "5%",
"padding": 5,
"itemGap": 10,
"textAlign": "auto",
"textVerticalAlign": "auto",
"triggerEvent": false
},
{
"show": true,
"text": "2018\u5e74\u5e7f\u897f\u5404\u5730\u5e02\u7814\u53d1\u6295\u5165\u6bd4\u5206\u6790\u56fe",
"target": "blank",
"subtarget": "blank",
"left": "54%",
"padding": 5,
"itemGap": 10,
"textAlign": "auto",
"textVerticalAlign": "auto",
"triggerEvent": false
}
],
"grid": [
{
"show": false,
"zlevel": 0,
"z": 2,
"left": "5%",
"top": "50px",
"right": "55%",
"bottom": "50px",
"containLabel": false,
"backgroundColor": "transparent",
"borderColor": "#ccc",
"borderWidth": 1,
"shadowOffsetX": 0,
"shadowOffsetY": 0
},
{
"show": false,
"zlevel": 0,
"z": 2,
"left": "55%",
"top": "50px",
"right": "5%",
"bottom": "50px",
"containLabel": false,
"backgroundColor": "transparent",
"borderColor": "#ccc",
"borderWidth": 1,
"shadowOffsetX": 0,
"shadowOffsetY": 0
}
]
};
chart_b9d7dc7de1554b2eb60696020b5f0eec.setOption(option_b9d7dc7de1554b2eb60696020b5f0eec);
window.addEventListener('resize', function(){
chart_b9d7dc7de1554b2eb60696020b5f0eec.resize();
})
</script>
</body>
</html>

Binary file not shown.

@ -0,0 +1,240 @@
import happybase
from pyecharts.charts import Bar
from pyspark.sql import SparkSession, Row
import os
from pyspark.sql.functions import when, count
from pyecharts import options as opts
# 指定python环境
os.environ['PYSPARK_PYTHON'] = 'D:\python\python3.11.4\python.exe'
os.environ['JAVA_HOME'] = "D:\jdk\jdk-17.0.8" # 记得把地址改成自己的
def cky_code01():
# 创建Spark会话
spark = SparkSession.builder.appName("HBaseDataLoading").master('local').getOrCreate()
# 连接到HBase
connection = happybase.Connection('192.168.23.128')
# 获取表
table = connection.table('bigdata')
# 定义列名
columns = ['info:企业注册地址', 'info:企业注册地是否在国家高新区内', 'info:企业主要生产经营活动是否在国家高新区内']
# 查询数据
data = []
for key, row in table.scan(columns=[col.encode('utf-8') for col in columns]):
row_data = {
'序号': key.decode(),
'企业注册地址': row['info:企业注册地址'.encode('utf-8')].decode(),
'企业注册地是否在国家高新区内': row['info:企业注册地是否在国家高新区内'.encode('utf-8')].decode(),
'企业主要生产经营活动是否在国家高新区内': row['info:企业主要生产经营活动是否在国家高新区内'.encode('utf-8')].decode()
}
data.append(row_data)
# 关闭连接
connection.close()
# 将数据转换为Spark DataFrame
df = spark.createDataFrame([Row(**{k: str(v) for k, v in i.items()}) for i in data])
# 广西的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号': '梧州市',
'田东石化工业': '百色市',
'柳太路': '柳州市',
'黎塘工业集中区东部产业园': '南宁市',
'广西壮族自治区工商行政管理局': '南宁市',
'三江县职业中学': '柳州市',
'心圩街道办事处高新工业园社区居委会': '南宁市',
'司能石油化工有限公司': '柳州市',
# 数字代号
'530003': '南宁市'
}
# 对每个县级行政区划进行处理
for county, city in county_to_city.items():
df = df.withColumn('企业注册地址',
when(df['企业注册地址'].contains(county), city).otherwise(df['企业注册地址']))
df = df.filter((df["企业注册地是否在国家高新区内"] == 1) & (df["企业主要生产经营活动是否在国家高新区内"] == 1))
filtered_df = df.groupBy("企业注册地址").agg(count("*").alias("数量"))
pandas_df = filtered_df.toPandas()
# 创建柱状图
cky_code01_bar = (
Bar()
.add_xaxis(list(pandas_df['企业注册地址'])) # 替换 'X轴标签' 为您的实际列名
.add_yaxis('企业数量(个)', list(pandas_df['数量'])) # 替换 'Y轴标签' 为您的实际列名
.set_global_opts(title_opts=opts.TitleOpts(title='企业在国家高新区活动图'))
)
# 渲染图表到HTML文件可选
return cky_code01_bar

@ -0,0 +1,290 @@
import happybase
from pyecharts.charts import Bar, Pie, Page
from pyecharts.commons.utils import JsCode
from pyecharts.globals import ThemeType
from pyspark.sql import functions as F
from pyspark.sql import SparkSession, Row
import os
from pyspark.sql.functions import when, count
from pyecharts import options as opts
# 指定python环境
os.environ['PYSPARK_PYTHON'] = 'D:\python\python3.11.4\python.exe'
os.environ['JAVA_HOME'] = "D:\jdk\jdk-17.0.8" # 记得把地址改成自己的
def cky_code02():
# 创建Spark会话
spark = SparkSession.builder.appName("HBaseDataLoading").master('local').getOrCreate()
# 连接到HBase
connection = happybase.Connection('192.168.23.128')
# 获取表
table = connection.table('bigdata')
# 定义列名
columns = ['info:企业注册地址', 'info:主要外资来源国别或地区代码', 'info:营业收入', 'info:净利润']
# 查询数据
data = []
for key, row in table.scan(columns=[col.encode('utf-8') for col in columns]):
row_data = {
'序号': key.decode(),
'企业注册地址': row['info:企业注册地址'.encode('utf-8')].decode(),
'主要外资来源国别或地区代码': row['info:主要外资来源国别或地区代码'.encode('utf-8')].decode(),
'营业收入': row['info:营业收入'.encode('utf-8')].decode(),
'净利润': row['info:净利润'.encode('utf-8')].decode()
}
data.append(row_data)
# 关闭连接
connection.close()
# 将数据转换为Spark DataFrame
df = spark.createDataFrame([Row(**{k: str(v) for k, v in i.items()}) for i in data])
# 广西的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号': '梧州市',
'田东石化工业': '百色市',
'柳太路': '柳州市',
'黎塘工业集中区东部产业园': '南宁市',
'广西壮族自治区工商行政管理局': '南宁市',
'三江县职业中学': '柳州市',
'心圩街道办事处高新工业园社区居委会': '南宁市',
'司能石油化工有限公司': '柳州市',
# 数字代号
'530003': '南宁市'
}
# 对每个县级行政区划进行处理
for county, city in county_to_city.items():
df = df.withColumn('企业注册地址',
when(df['企业注册地址'].contains(county), city).otherwise(df['企业注册地址']))
filtered_df = df.filter(df["主要外资来源国别或地区代码"] > 0)
grouped_df = filtered_df.groupBy("企业注册地址")
result_df = grouped_df.agg(
F.sum("营业收入").alias("总营业收入"),
F.sum("净利润").alias("总净利润"),
F.count("*").alias("外企数量")
)
pandas_df = result_df.toPandas()
# 假设您的 Pandas DataFrame 中包含 X 轴和 Y 轴的数据
x_axis_data = list(pandas_df['企业注册地址']) # 替换 'X轴标签' 为实际列名
y_axis_data2 = list(pandas_df['总营业收入'])
y_axis_data3 = list(pandas_df['总净利润'])
# 创建柱状图
cky_code02_bar1 = (
Bar()
.add_xaxis(x_axis_data)
.add_yaxis(
'总营业收入(千元)', y_axis_data2,
label_opts=opts.LabelOpts(is_show=False), # 隐藏柱状图上的数字
tooltip_opts=opts.TooltipOpts(formatter="{b}: {c}")) # 鼠标移动到柱形上显示数值)
.set_global_opts(title_opts=opts.TitleOpts(title='广西外企收入图'))
)
cky_code02_bar2 = (
Bar()
.add_xaxis(x_axis_data)
.add_yaxis(
'总净利润(千元)', y_axis_data3,
label_opts=opts.LabelOpts(is_show=False), # 隐藏柱状图上的数字
tooltip_opts=opts.TooltipOpts(formatter="{b}: {c}")) # 鼠标移动到柱形上显示数值)
.set_global_opts(title_opts=opts.TitleOpts(title='广西外企收入图'))
)
data = list(zip(pandas_df['企业注册地址'], pandas_df['外企数量']))
cky_code02_pie = (
Pie(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))
.add(
"",
data,
radius=["15%", "40%"], # 设置扇形图的内外半径
center=["50%", "850px"],
label_opts=opts.LabelOpts(
position="outside", # 标签显示在扇形区域的外部
formatter=JsCode("function(params){return params.name + ': ' + params.value;}"), # 标签格式化
),
)
.set_global_opts(
title_opts=opts.TitleOpts(title="外企数量分布"),
legend_opts=opts.LegendOpts(
orient="vertical", # 图例垂直排列
pos_left="80%", # 图例位置
),
)
)
return cky_code02_bar1, cky_code02_bar2, cky_code02_pie

@ -0,0 +1,439 @@
import happybase
from pyecharts.charts import Bar, Pie, Page, Map
from pyecharts.commons.utils import JsCode
from pyspark.sql import functions as F
from pyspark.sql import SparkSession, Row
import os
from pyspark.sql.functions import when, count
from pyecharts import options as opts
# 指定python环境
os.environ['PYSPARK_PYTHON'] = 'D:\python\python3.11.4\python.exe'
os.environ['JAVA_HOME'] = "D:\jdk\jdk-17.0.8" # 记得把地址改成自己的
def cky_code03():
# 创建Spark会话
spark = SparkSession.builder.appName("HBaseDataLoading").master('local').getOrCreate()
# 连接到HBase
connection = happybase.Connection('192.168.23.128')
# 获取表
table = connection.table('bigdata')
# 定义列名
columns = ['info:企业注册地址', 'info:主要业务活动或主要产品1']
# 查询数据
data = []
for key, row in table.scan(columns=[col.encode('utf-8') for col in columns]):
row_data = {
'序号': key.decode(),
'企业注册地址': row['info:企业注册地址'.encode('utf-8')].decode(),
'主要业务活动或主要产品1': row['info:主要业务活动或主要产品1'.encode('utf-8')].decode()
}
data.append(row_data)
# 关闭连接
connection.close()
# 将数据转换为Spark DataFrame
df = spark.createDataFrame([Row(**{k: str(v) for k, v in i.items()}) for i in data])
# 广西的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号': '梧州市',
'田东石化工业': '百色市',
'柳太路': '柳州市',
'黎塘工业集中区东部产业园': '南宁市',
'广西壮族自治区工商行政管理局': '南宁市',
'三江县职业中学': '柳州市',
'心圩街道办事处高新工业园社区居委会': '南宁市',
'司能石油化工有限公司': '柳州市',
# 数字代号
'530003': '南宁市'
}
# 对每个县级行政区划进行处理
for county, city in county_to_city.items():
df = df.withColumn('企业注册地址',
when(df['企业注册地址'].contains(county), city).otherwise(df['企业注册地址']))
# 制造业
filter_df1 = df.filter(
df["主要业务活动或主要产品1"].like("%制造%") |
df["主要业务活动或主要产品1"].like("%生产%") |
df["主要业务活动或主要产品1"].like("%产品%") |
df["主要业务活动或主要产品1"].like("%工厂%")
)
grouped_df1 = filter_df1.groupBy("企业注册地址")
result_df1 = grouped_df1.agg(
F.count("*").alias("制造业数量")
)
# 服务业
filter_df2 = df.filter(
df["主要业务活动或主要产品1"].like("%服务%") |
df["主要业务活动或主要产品1"].like("%咨询%") |
df["主要业务活动或主要产品1"].like("%提供%") |
df["主要业务活动或主要产品1"].like("%客户%") |
df["主要业务活动或主要产品1"].like("%顾客%")
)
grouped_df2 = filter_df2.groupBy("企业注册地址")
result_df2 = grouped_df2.agg(
F.count("*").alias("服务业数量")
)
# 农业
filter_df3 = df.filter(
df["主要业务活动或主要产品1"].like("%农业%") |
df["主要业务活动或主要产品1"].like("%农田%") |
df["主要业务活动或主要产品1"].like("%种植%") |
df["主要业务活动或主要产品1"].like("%养殖%")
)
grouped_df3 = filter_df3.groupBy("企业注册地址")
result_df3 = grouped_df3.agg(
F.count("*").alias("农业数量")
)
# 金融业
filter_df4 = df.filter(
df["主要业务活动或主要产品1"].like("%金融%") |
df["主要业务活动或主要产品1"].like("%银行%") |
df["主要业务活动或主要产品1"].like("%贷款%") |
df["主要业务活动或主要产品1"].like("%投资%") |
df["主要业务活动或主要产品1"].like("%金融投资%")
)
grouped_df4 = filter_df4.groupBy("企业注册地址")
result_df4 = grouped_df4.agg(
F.count("*").alias("金融业数量")
)
# IT行业
filter_df5 = df.filter(
df["主要业务活动或主要产品1"].like("%技术%") |
df["主要业务活动或主要产品1"].like("%IT%") |
df["主要业务活动或主要产品1"].like("%软件%") |
df["主要业务活动或主要产品1"].like("%信息技术%") |
df["主要业务活动或主要产品1"].like("%开发%") |
df["主要业务活动或主要产品1"].like("%应用程序%")
)
grouped_df5 = filter_df5.groupBy("企业注册地址")
result_df5 = grouped_df5.agg(
F.count("*").alias("IT行业数量")
)
# 零售业
filter_df6 = df.filter(
df["主要业务活动或主要产品1"].like("%零售%") |
df["主要业务活动或主要产品1"].like("%销售%") |
df["主要业务活动或主要产品1"].like("%商店%") |
df["主要业务活动或主要产品1"].like("%商品%") |
df["主要业务活动或主要产品1"].like("%购物%")
)
grouped_df6 = filter_df6.groupBy("企业注册地址")
result_df6 = grouped_df6.agg(
F.count("*").alias("零售业数量")
)
# 建筑和房地产
filter_df7 = df.filter(
df["主要业务活动或主要产品1"].like("%建筑%") |
df["主要业务活动或主要产品1"].like("%房地产%") |
df["主要业务活动或主要产品1"].like("%工程%") |
df["主要业务活动或主要产品1"].like("%租赁%") |
df["主要业务活动或主要产品1"].like("%房产%")
)
grouped_df7 = filter_df7.groupBy("企业注册地址")
result_df7 = grouped_df7.agg(
F.count("*").alias("建筑和房地产数量")
)
# 媒体和娱乐业
filter_df8 = df.filter(
df["主要业务活动或主要产品1"].like("%媒体%") |
df["主要业务活动或主要产品1"].like("%广告%") |
df["主要业务活动或主要产品1"].like("%娱乐%") |
df["主要业务活动或主要产品1"].like("%节目%") |
df["主要业务活动或主要产品1"].like("%体育%")
)
grouped_df8 = filter_df8.groupBy("企业注册地址")
result_df8 = grouped_df8.agg(
F.count("*").alias("媒体和娱乐业数量")
)
# 制造业
data1 = result_df1.select("企业注册地址", "制造业数量").collect()
region_names1 = [row["企业注册地址"] for row in data1]
enterprise_counts1 = [row["制造业数量"] for row in data1]
# 服务业
data2 = result_df2.select("企业注册地址", "服务业数量").collect()
region_names2 = [row["企业注册地址"] for row in data2]
enterprise_counts2 = [row["服务业数量"] for row in data2]
# 农业
data3 = result_df3.select("企业注册地址", "农业数量").collect()
region_names3 = [row["企业注册地址"] for row in data3]
enterprise_counts3 = [row["农业数量"] for row in data3]
# 金融业
data4 = result_df4.select("企业注册地址", "金融业数量").collect()
region_names4 = [row["企业注册地址"] for row in data4]
enterprise_counts4 = [row["金融业数量"] for row in data4]
# IT行业
data5 = result_df5.select("企业注册地址", "IT行业数量").collect()
region_names5 = [row["企业注册地址"] for row in data5]
enterprise_counts5 = [row["IT行业数量"] for row in data5]
# 零售业
data6 = result_df6.select("企业注册地址", "零售业数量").collect()
region_names6 = [row["企业注册地址"] for row in data6]
enterprise_counts6 = [row["零售业数量"] for row in data6]
# 建筑和房地产
data7 = result_df7.select("企业注册地址", "建筑和房地产数量").collect()
region_names7 = [row["企业注册地址"] for row in data7]
enterprise_counts7 = [row["建筑和房地产数量"] for row in data7]
# 媒体和娱乐业
data8 = result_df8.select("企业注册地址", "媒体和娱乐业数量").collect()
region_names8 = [row["企业注册地址"] for row in data8]
enterprise_counts8 = [row["媒体和娱乐业数量"] for row in data8]
# 创建一个 Map 图表对象,并设置地图的基本属性
map_chart1 = (
Map()
.add("制造业", list(zip(region_names1, enterprise_counts1)), "广西")
.set_global_opts(
title_opts=opts.TitleOpts(title="2018年广西制造业企业数量分布图"),
visualmap_opts=opts.VisualMapOpts(max_=max(enterprise_counts1)),
)
)
map_chart2 = (
Map()
.add("服务业", list(zip(region_names2, enterprise_counts2)), "广西")
.set_global_opts(
title_opts=opts.TitleOpts(title="2018年广西服务业企业数量分布图"),
visualmap_opts=opts.VisualMapOpts(max_=max(enterprise_counts2)),
)
)
map_chart3 = (
Map()
.add("农业", list(zip(region_names3, enterprise_counts3)), "广西")
.set_global_opts(
title_opts=opts.TitleOpts(title="2018年广西农业企业数量分布图"),
visualmap_opts=opts.VisualMapOpts(max_=max(enterprise_counts3)),
)
)
map_chart4 = (
Map()
.add("金融业", list(zip(region_names4, enterprise_counts4)), "广西")
.set_global_opts(
title_opts=opts.TitleOpts(title="2018年广西金融业企业数量分布图"),
visualmap_opts=opts.VisualMapOpts(max_=max(enterprise_counts4)),
)
)
map_chart5 = (
Map()
.add("IT行业", list(zip(region_names5, enterprise_counts5)), "广西")
.set_global_opts(
title_opts=opts.TitleOpts(title="2018年广西IT行业企业数量分布图"),
visualmap_opts=opts.VisualMapOpts(max_=max(enterprise_counts5)),
)
)
map_chart6 = (
Map()
.add("零售业", list(zip(region_names6, enterprise_counts6)), "广西")
.set_global_opts(
title_opts=opts.TitleOpts(title="2018年广西零售业企业数量分布图"),
visualmap_opts=opts.VisualMapOpts(max_=max(enterprise_counts6)),
)
)
map_chart7 = (
Map()
.add("建筑和房地产", list(zip(region_names7, enterprise_counts7)), "广西")
.set_global_opts(
title_opts=opts.TitleOpts(title="2018年广西建筑和房地产企业数量分布图"),
visualmap_opts=opts.VisualMapOpts(max_=max(enterprise_counts7)),
)
)
map_chart8 = (
Map()
.add("媒体和娱乐业", list(zip(region_names8, enterprise_counts8)), "广西")
.set_global_opts(
title_opts=opts.TitleOpts(title="2018年广西媒体和娱乐业企业数量分布图"),
visualmap_opts=opts.VisualMapOpts(max_=max(enterprise_counts8)),
)
)
page = Page(layout=Page.SimplePageLayout)
page.add(map_chart1)
page.add(map_chart2)
page.add(map_chart3)
page.add(map_chart4)
page.add(map_chart5)
page.add(map_chart6)
page.add(map_chart7)
page.add(map_chart8)
return page

@ -0,0 +1,69 @@
import happybase
from pyspark.sql import SparkSession
import os
os.environ['JAVA_HOME'] = "D:\jdk\jdk-17.0.8" # 记得把地址改成自己的
# 创建HBase连接
connection = happybase.Connection('192.168.23.128')
# 检查表是否存在
if b'bigdata' in connection.tables():
# 如果表存在,删除表
connection.disable_table('bigdata')
connection.delete_table('bigdata')
# 创建表
connection.create_table(
'bigdata',
{'info': dict(max_versions=10)}
)
# 获取表
table = connection.table('bigdata')
# 创建Spark会话
spark = SparkSession.builder.appName("ExcelDataCleaning").master('local').getOrCreate()
# 读取CSV文件为Spark DataFrame
df = spark.read.csv("washData.csv", header=True, inferSchema=True)
# 将Spark DataFrame转换为Pandas DataFrame
pd = df.toPandas()
# 将Pandas DataFrame的数据插入到HBase
for index, row in pd.iterrows():
data = {
f'info:地址'.encode(): str(row['地址']).encode(),
f'info:企业注册地址'.encode(): str(row['企业注册地址']).encode(),
f'info:营业收入'.encode(): str(row['营业收入']).encode(),
f'info:净利润'.encode(): str(row['净利润']).encode(),
f'info:其中:研发、试验检验费'.encode(): str(row['其中:研发、试验检验费']).encode(),
f'info:其中:技术(研究)开发费'.encode(): str(row['其中:技术(研究)开发费']).encode(),
f'info:其中:技术收入'.encode(): str(row['其中:技术收入']).encode(),
f'info:其中:技术转让收入'.encode(): str(row['其中:技术转让收入']).encode(),
f'info:技术承包收入'.encode(): str(row['技术承包收入']).encode(),
f'info:技术咨询与服务收入'.encode(): str(row['技术咨询与服务收入']).encode(),
f'info:年末资产总计'.encode(): str(row['年末资产总计']).encode(),
f'info:主要业务活动或主要产品1'.encode(): str(row['主要业务活动或主要产品1']).encode(),
f'info:主要外资来源国别或地区代码'.encode(): str(row['主要外资来源国别或地区代码']).encode(),
f'info:企业注册地是否在国家高新区内'.encode(): str(row['企业注册地是否在国家高新区内']).encode(),
f'info:企业主要生产经营活动是否在国家高新区内'.encode(): str(row['企业主要生产经营活动是否在国家高新区内']).encode(),
f'info:其中:支付科研人员的工资及福利费'.encode(): str(row['其中:支付科研人员的工资及福利费']).encode(),
f'info:营业成本'.encode(): str(row['营业成本']).encode()
}
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()

File diff suppressed because one or more lines are too long

@ -0,0 +1,585 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Awesome-pyecharts</title>
<script type="text/javascript" src="https://assets.pyecharts.org/assets/v5/echarts.min.js"></script>
</head>
<body >
<div id="0e1d92dda2cc4445a81150fe42354fc3" class="chart-container" style="width:100%; height:1100px; "></div>
<script>
var chart_0e1d92dda2cc4445a81150fe42354fc3 = echarts.init(
document.getElementById('0e1d92dda2cc4445a81150fe42354fc3'), 'white', {renderer: 'canvas'});
var option_0e1d92dda2cc4445a81150fe42354fc3 = {
"animation": true,
"animationThreshold": 2000,
"animationDuration": 1000,
"animationEasing": "cubicOut",
"animationDelay": 0,
"animationDurationUpdate": 300,
"animationEasingUpdate": "cubicOut",
"animationDelayUpdate": 0,
"aria": {
"enabled": false
},
"color": [
"#5470c6",
"#91cc75",
"#fac858",
"#ee6666",
"#73c0de",
"#3ba272",
"#fc8452",
"#9a60b4",
"#ea7ccc"
],
"series": [
{
"type": "bar",
"name": "\u603b\u8425\u4e1a\u6536\u5165\uff08\u5343\u5143\uff09",
"xAxisIndex": 0,
"yAxisIndex": 0,
"legendHoverLink": true,
"data": [
1754614.29,
22527902.82,
621585.07,
14990633.42,
106681920.0,
1000186.0,
1028079.0,
1134649.72,
9217764.14,
3584805.0,
2078749.99
],
"realtimeSort": false,
"showBackground": false,
"stackStrategy": "samesign",
"cursor": "pointer",
"barMinHeight": 0,
"barCategoryGap": "20%",
"barGap": "30%",
"large": false,
"largeThreshold": 400,
"seriesLayoutBy": "column",
"datasetIndex": 0,
"clip": true,
"zlevel": 0,
"z": 2,
"label": {
"show": false,
"margin": 8
},
"tooltip": {
"show": true,
"trigger": "item",
"triggerOn": "mousemove|click",
"axisPointer": {
"type": "line"
},
"showContent": true,
"alwaysShowContent": false,
"showDelay": 0,
"hideDelay": 100,
"enterable": false,
"confine": false,
"appendToBody": false,
"transitionDuration": 0.4,
"formatter": "{b}: {c}",
"textStyle": {
"fontSize": 14
},
"borderWidth": 0,
"padding": 5,
"order": "seriesAsc"
}
},
{
"type": "bar",
"name": "\u603b\u51c0\u5229\u6da6\uff08\u5343\u5143\uff09",
"xAxisIndex": 1,
"yAxisIndex": 1,
"legendHoverLink": true,
"data": [
57426.21,
206493.72,
53298.29,
974409.33,
4242059.0,
156597.0,
53254.3,
20418.84,
657616.33,
205935.0,
226457.38
],
"realtimeSort": false,
"showBackground": false,
"stackStrategy": "samesign",
"cursor": "pointer",
"barMinHeight": 0,
"barCategoryGap": "20%",
"barGap": "30%",
"large": false,
"largeThreshold": 400,
"seriesLayoutBy": "column",
"datasetIndex": 0,
"clip": true,
"zlevel": 0,
"z": 2,
"label": {
"show": false,
"margin": 8
},
"tooltip": {
"show": true,
"trigger": "item",
"triggerOn": "mousemove|click",
"axisPointer": {
"type": "line"
},
"showContent": true,
"alwaysShowContent": false,
"showDelay": 0,
"hideDelay": 100,
"enterable": false,
"confine": false,
"appendToBody": false,
"transitionDuration": 0.4,
"formatter": "{b}: {c}",
"textStyle": {
"fontSize": 14
},
"borderWidth": 0,
"padding": 5,
"order": "seriesAsc"
}
},
{
"type": "pie",
"colorBy": "data",
"legendHoverLink": true,
"selectedMode": false,
"selectedOffset": 10,
"clockwise": true,
"startAngle": 90,
"minAngle": 0,
"minShowLabelAngle": 0,
"avoidLabelOverlap": true,
"stillShowZeroSum": true,
"percentPrecision": 2,
"showEmptyCircle": true,
"emptyCircleStyle": {
"color": "lightgray",
"borderColor": "#000",
"borderWidth": 0,
"borderType": "solid",
"borderDashOffset": 0,
"borderCap": "butt",
"borderJoin": "bevel",
"borderMiterLimit": 10,
"opacity": 1
},
"data": [
{
"name": "\u5357\u5b81\u5e02",
"value": 13
},
{
"name": "\u9632\u57ce\u6e2f\u5e02",
"value": 2
},
{
"name": "\u767e\u8272\u5e02",
"value": 2
},
{
"name": "\u7389\u6797\u5e02",
"value": 2
},
{
"name": "\u67f3\u5dde\u5e02",
"value": 7
},
{
"name": "\u5d07\u5de6\u5e02",
"value": 3
},
{
"name": "\u5317\u6d77\u5e02",
"value": 3
},
{
"name": "\u6842\u6797\u5e02",
"value": 9
},
{
"name": "\u94a6\u5dde\u5e02",
"value": 5
},
{
"name": "\u8d3a\u5dde\u5e02",
"value": 2
},
{
"name": "\u68a7\u5dde\u5e02",
"value": 8
}
],
"radius": [
"15%",
"40%"
],
"center": [
"50%",
"850px"
],
"label": {
"show": true,
"position": "outside",
"margin": 8,
"formatter": function(params){return params.name + ': ' + params.value;}
},
"labelLine": {
"show": true,
"showAbove": false,
"length": 15,
"length2": 15,
"smooth": false,
"minTurnAngle": 90,
"maxSurfaceAngle": 90
},
"xAxisIndex": 2,
"yAxisIndex": 2
}
],
"legend": [
{
"data": [
"\u603b\u8425\u4e1a\u6536\u5165\uff08\u5343\u5143\uff09"
],
"selected": {},
"show": true,
"padding": 5,
"itemGap": 10,
"itemWidth": 25,
"itemHeight": 14,
"backgroundColor": "transparent",
"borderColor": "#ccc",
"borderWidth": 1,
"borderRadius": 0,
"pageButtonItemGap": 5,
"pageButtonPosition": "end",
"pageFormatter": "{current}/{total}",
"pageIconColor": "#2f4554",
"pageIconInactiveColor": "#aaa",
"pageIconSize": 15,
"animationDurationUpdate": 800,
"selector": false,
"selectorPosition": "auto",
"selectorItemGap": 7,
"selectorButtonGap": 10,
"left": "35%",
"orient": "horizontal"
},
{
"data": [
"\u603b\u51c0\u5229\u6da6\uff08\u5343\u5143\uff09"
],
"selected": {},
"show": true,
"padding": 5,
"itemGap": 10,
"itemWidth": 25,
"itemHeight": 14,
"backgroundColor": "transparent",
"borderColor": "#ccc",
"borderWidth": 1,
"borderRadius": 0,
"pageButtonItemGap": 5,
"pageButtonPosition": "end",
"pageFormatter": "{current}/{total}",
"pageIconColor": "#2f4554",
"pageIconInactiveColor": "#aaa",
"pageIconSize": 15,
"animationDurationUpdate": 800,
"selector": false,
"selectorPosition": "auto",
"selectorItemGap": 7,
"selectorButtonGap": 10,
"right": "5%",
"orient": "horizontal"
},
{
"data": [
"\u5357\u5b81\u5e02",
"\u9632\u57ce\u6e2f\u5e02",
"\u767e\u8272\u5e02",
"\u7389\u6797\u5e02",
"\u67f3\u5dde\u5e02",
"\u5d07\u5de6\u5e02",
"\u5317\u6d77\u5e02",
"\u6842\u6797\u5e02",
"\u94a6\u5dde\u5e02",
"\u8d3a\u5dde\u5e02",
"\u68a7\u5dde\u5e02"
],
"selected": {},
"show": true,
"left": "80%",
"orient": "horizontal",
"padding": 5,
"itemGap": 10,
"itemWidth": 25,
"itemHeight": 14,
"backgroundColor": "transparent",
"borderColor": "#ccc",
"borderWidth": 1,
"borderRadius": 0,
"pageButtonItemGap": 5,
"pageButtonPosition": "end",
"pageFormatter": "{current}/{total}",
"pageIconColor": "#2f4554",
"pageIconInactiveColor": "#aaa",
"pageIconSize": 15,
"animationDurationUpdate": 800,
"selector": false,
"selectorPosition": "auto",
"selectorItemGap": 7,
"selectorButtonGap": 10,
"right": "50%",
"top": "550px"
}
],
"tooltip": {
"show": true,
"trigger": "item",
"triggerOn": "mousemove|click",
"axisPointer": {
"type": "line"
},
"showContent": true,
"alwaysShowContent": false,
"showDelay": 0,
"hideDelay": 100,
"enterable": false,
"confine": false,
"appendToBody": false,
"transitionDuration": 0.4,
"textStyle": {
"fontSize": 14
},
"borderWidth": 0,
"padding": 5,
"order": "seriesAsc"
},
"xAxis": [
{
"show": true,
"scale": false,
"nameLocation": "end",
"nameGap": 15,
"gridIndex": 0,
"inverse": false,
"offset": 0,
"splitNumber": 5,
"minInterval": 0,
"splitLine": {
"show": true,
"lineStyle": {
"show": true,
"width": 1,
"opacity": 1,
"curveness": 0,
"type": "solid"
}
},
"data": [
"\u5357\u5b81\u5e02",
"\u9632\u57ce\u6e2f\u5e02",
"\u767e\u8272\u5e02",
"\u7389\u6797\u5e02",
"\u67f3\u5dde\u5e02",
"\u5d07\u5de6\u5e02",
"\u5317\u6d77\u5e02",
"\u6842\u6797\u5e02",
"\u94a6\u5dde\u5e02",
"\u8d3a\u5dde\u5e02",
"\u68a7\u5dde\u5e02"
]
},
{
"show": true,
"scale": false,
"nameLocation": "end",
"nameGap": 15,
"gridIndex": 1,
"inverse": false,
"offset": 0,
"splitNumber": 5,
"minInterval": 0,
"splitLine": {
"show": true,
"lineStyle": {
"show": true,
"width": 1,
"opacity": 1,
"curveness": 0,
"type": "solid"
}
},
"data": [
"\u5357\u5b81\u5e02",
"\u9632\u57ce\u6e2f\u5e02",
"\u767e\u8272\u5e02",
"\u7389\u6797\u5e02",
"\u67f3\u5dde\u5e02",
"\u5d07\u5de6\u5e02",
"\u5317\u6d77\u5e02",
"\u6842\u6797\u5e02",
"\u94a6\u5dde\u5e02",
"\u8d3a\u5dde\u5e02",
"\u68a7\u5dde\u5e02"
]
}
],
"yAxis": [
{
"show": true,
"scale": false,
"nameLocation": "end",
"nameGap": 15,
"gridIndex": 0,
"inverse": false,
"offset": 0,
"splitNumber": 5,
"minInterval": 0,
"splitLine": {
"show": true,
"lineStyle": {
"show": true,
"width": 1,
"opacity": 1,
"curveness": 0,
"type": "solid"
}
}
},
{
"show": true,
"scale": false,
"nameLocation": "end",
"nameGap": 15,
"gridIndex": 1,
"inverse": false,
"offset": 0,
"splitNumber": 5,
"minInterval": 0,
"splitLine": {
"show": true,
"lineStyle": {
"show": true,
"width": 1,
"opacity": 1,
"curveness": 0,
"type": "solid"
}
}
}
],
"title": [
{
"show": true,
"text": "2018\u5e74\u5e7f\u897f\u5916\u8d44\u4f01\u4e1a\u5f15\u8fdb\u603b\u8425\u4e1a\u6536\u5165\u56fe",
"target": "blank",
"subtarget": "blank",
"left": "5%",
"padding": 5,
"itemGap": 10,
"textAlign": "auto",
"textVerticalAlign": "auto",
"triggerEvent": false
},
{
"show": true,
"text": "2018\u5e74\u5e7f\u897f\u5916\u8d44\u4f01\u4e1a\u5f15\u8fdb\u603b\u51c0\u5229\u6da6\u56fe",
"target": "blank",
"subtarget": "blank",
"left": "54%",
"padding": 5,
"itemGap": 10,
"textAlign": "auto",
"textVerticalAlign": "auto",
"triggerEvent": false
},
{
"show": true,
"text": "2018\u5e74\u5e7f\u897f\u5404\u5730\u5e02\u5916\u4f01\u6570\u91cf\u5206\u5e03\u56fe",
"target": "blank",
"subtarget": "blank",
"left": "25%",
"top": "550px",
"padding": 5,
"itemGap": 10,
"textAlign": "auto",
"textVerticalAlign": "auto",
"triggerEvent": false
}
],
"grid": [
{
"show": false,
"zlevel": 0,
"z": 2,
"left": "5%",
"top": "50px",
"right": "55%",
"bottom": "650px",
"containLabel": false,
"backgroundColor": "transparent",
"borderColor": "#ccc",
"borderWidth": 1,
"shadowOffsetX": 0,
"shadowOffsetY": 0
},
{
"show": false,
"zlevel": 0,
"z": 2,
"left": "55%",
"top": "50px",
"right": "5%",
"bottom": "650px",
"containLabel": false,
"backgroundColor": "transparent",
"borderColor": "#ccc",
"borderWidth": 1,
"shadowOffsetX": 0,
"shadowOffsetY": 0
},
{
"show": false,
"zlevel": 0,
"z": 2,
"left": "25%",
"top": "550px",
"right": "25%",
"bottom": "50px",
"containLabel": false,
"backgroundColor": "transparent",
"borderColor": "#ccc",
"borderWidth": 1,
"shadowOffsetX": 0,
"shadowOffsetY": 0
}
]
};
chart_0e1d92dda2cc4445a81150fe42354fc3.setOption(option_0e1d92dda2cc4445a81150fe42354fc3);
window.addEventListener('resize', function(){
chart_0e1d92dda2cc4445a81150fe42354fc3.resize();
})
</script>
</body>
</html>

File diff suppressed because it is too large Load Diff

@ -0,0 +1,15 @@
import happybase
# HBase的连接信息
hbase_host = '192.168.23.128'
hbase_table_name = 'bigdata'
# 创建HBase连接
connection = happybase.Connection(host=hbase_host)
print(connection.tables())
# 关闭连接
connection.close()

@ -0,0 +1,286 @@
import happybase
from pyspark.sql import functions as F
from pyecharts.charts import Bar
from pyspark.sql import SparkSession, Row
import os
from pyecharts import options as opts
from pyspark.sql.functions import when, regexp_extract
# 指定python环境
os.environ['PYSPARK_PYTHON'] = 'D:\python\python3.11.4\python.exe'
os.environ['JAVA_HOME'] = "D:\jdk\jdk-17.0.8" # 记得把地址改成自己的
# - 创新能力:通过分析高新技术企业的数量,以及这些企业的研发投入和技术收入,我们可以了解当地的创新能力。
def lyh_code01():
# 创建Spark会话
spark = SparkSession.builder.appName("HBaseDataLoading").master('local').getOrCreate()
# 连接到HBase
connection = happybase.Connection('192.168.23.128')
# 获取表
table = connection.table('bigdata')
# 定义列名
columns = ['info:地址', 'info:其中:研发、试验检验费', 'info:其中:技术(研究)开发费',
'info:其中:技术转让收入','info:技术承包收入','info:技术咨询与服务收入','info:其中:技术收入']
# 查询数据
data = []
for key, row in table.scan(columns=[col.encode('utf-8') for col in columns]):
row_data = {
'序号': key.decode(),
'地址': row['info:地址'.encode('utf-8')].decode(),
'其中:研发、试验检验费': row['info:其中:研发、试验检验费'.encode('utf-8')].decode(),
'其中:技术(研究)开发费': row['info:其中:技术(研究)开发费'.encode('utf-8')].decode(),
'其中:技术转让收入': row['info:其中:技术转让收入'.encode('utf-8')].decode(),
'技术承包收入': row['info:技术承包收入'.encode('utf-8')].decode(),
'技术咨询与服务收入': row['info:技术咨询与服务收入'.encode('utf-8')].decode(),
'其中:技术收入': row['info:其中:技术收入'.encode('utf-8')].decode(),
}
data.append(row_data)
# 关闭连接
connection.close()
# 将数据转换为Spark DataFrame
df = spark.createDataFrame([Row(**{k: str(v) for k, v in i.items()}) for i in data])
df = df.filter(~df['地址'].isin(['NULL', 'qingxiubgs2014@sina.com', '防城市', 'saddress']))
# 创建一个新列 '研发投入额',包含 '其中:研发、试验检验费' 和 '其中:技术(研究)开发费' 的总和
df = df.withColumn('研发投入额', F.col('其中:研发、试验检验费') + F.col('其中:技术(研究)开发费'))
df = df.withColumn('技术收入总额',
F.col('其中:技术收入') + F.col('其中:技术转让收入') + F.col('技术承包收入') + F.col(
'技术咨询与服务收入'))
# 去除重复项
df = df.dropDuplicates()
# 需要的列名
df = df.select('地址', '研发投入额', '技术收入总额')
# 创建一个正则表达式,匹配"市"及其之前的所有字符
pattern = "(.*市)"
# 使用regexp_extract函数提取地址中的城市名如果没有匹配到则保持原始地址不变
df = df.withColumn('地址',
when(df['地址'].rlike(pattern), regexp_extract(df['地址'], pattern, 1)).otherwise(df['地址']))
# 检查"地址"列是否以"广西"开头,如果是,则去掉前两个字符,否则保持原始地址不变
df = df.withColumn('地址', when(df['地址'].startswith('广西'), df['地址'].substr(3, 50)).otherwise(df['地址']))
# 广西的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_geo_analysis = df.groupBy('地址').agg(
F.count('研发投入额').alias('企业数量'),
F.round(F.sum('研发投入额')).alias('总研发投入额'),
F.round(F.sum('技术收入总额')).alias('总技术收入额') # 这里确保使用正确的列名 '技术收入总额'
)
# 按企业数量降序排列
df_geo_analysis = df_geo_analysis.orderBy('企业数量', ascending=False)
# 将结果转换为Pandas DataFrame
pandas_geo_df = df_geo_analysis.toPandas()
# 假设你想使用相等的权重,即 alpha = beta = 1
alpha = 1
beta = 1
# 计算各指标的最大值
max_count = df_geo_analysis.agg(F.max('企业数量')).collect()[0][0]
max_rd_investment = df_geo_analysis.agg(F.max('总研发投入额')).collect()[0][0]
max_tech_income = df_geo_analysis.agg(F.max('总技术收入额')).collect()[0][0]
# 添加新列 '创新能力',并保留五位小数
df_geo_analysis = df_geo_analysis.withColumn(
'创新能力',
F.round((F.col('企业数量') + alpha * F.col('总研发投入额') + beta * F.col('总技术收入额')) /
(max_count + alpha * max_rd_investment + beta * max_tech_income), 5)
)
# 将结果转换为Pandas DataFrame包括 '创新能力' 列
pandas_geo_df = df_geo_analysis.toPandas()
# 排序 DataFrame按照创新能力降序排列
sorted_pandas_geo_df = pandas_geo_df.sort_values(by='创新能力', ascending=False)
# 使用过滤后的数据创建 Pyecharts 条形图
lyh_code01_bar = (
Bar()
.add_xaxis(sorted_pandas_geo_df['地址'].tolist())
.add_yaxis('创新能力', sorted_pandas_geo_df['创新能力'].tolist(), label_opts=opts.LabelOpts(position='inside'))
.set_series_opts(label_opts=opts.LabelOpts(is_show=True, position='top', formatter='{c}'))
.set_global_opts(
title_opts=opts.TitleOpts(title="地域创新能力分析"),
xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-30, font_size=10)),
)
)
return lyh_code01_bar

@ -0,0 +1,287 @@
import happybase
from pyspark.sql import SparkSession, Row
import os
from pyspark.sql import functions as F
from pyspark.sql.functions import when, regexp_extract
from pyecharts.charts import Bar
from pyecharts import options as opts
# 指定python环境
os.environ['PYSPARK_PYTHON'] = 'D:\python\python3.11.4\python.exe'
os.environ['JAVA_HOME'] = "D:\jdk\jdk-17.0.8" # 记得把地址改成自己的
# - 地域经济活力:通过分析不同地域的企业数量,以及这些企业的营业收入和净利润,我们可以了解各地域的经济活力。
def lyh_code02():
# 创建Spark会话
spark = SparkSession.builder.appName("HBaseDataLoading").master('local').getOrCreate()
# 连接到HBase
connection = happybase.Connection('192.168.23.128')
# 获取表
table = connection.table('bigdata')
# 定义列名
columns = ['info:地址', 'info:营业收入', 'info:净利润']
# 查询数据
data = []
for key, row in table.scan(columns=[col.encode('utf-8') for col in columns]):
row_data = {
'序号': key.decode(),
'地址': row['info:地址'.encode('utf-8')].decode(),
'营业收入': row['info:营业收入'.encode('utf-8')].decode(),
'净利润': row['info:净利润'.encode('utf-8')].decode(),
}
data.append(row_data)
# 关闭连接
connection.close()
# 将数据转换为Spark DataFrame
df = spark.createDataFrame([Row(**{k: str(v) for k, v in i.items()}) for i in data])
df = df.filter(~df['地址'].isin(['NULL', 'qingxiubgs2014@sina.com', '防城市', 'saddress']))
# 创建一个新列 '企业营业收入' 和 '企业净利润'
df = df.withColumn('企业营业收入', F.col('营业收入'))
df = df.withColumn('企业净利润', F.col('净利润'))
# 去除重复项
df = df.dropDuplicates()
# 需要的列名
df = df.select('地址', '企业营业收入', '企业净利润')
# 创建一个正则表达式,匹配"市"及其之前的所有字符
pattern = "(.*市)"
# 使用regexp_extract函数提取地址中的城市名如果没有匹配到则保持原始地址不变
df = df.withColumn('地址',
when(df['地址'].rlike(pattern), regexp_extract(df['地址'], pattern, 1)).otherwise(df['地址']))
# 检查"地址"列是否以"广西"开头,如果是,则去掉前两个字符,否则保持原始地址不变
df = df.withColumn('地址', when(df['地址'].startswith('广西'), df['地址'].substr(3, 50)).otherwise(df['地址']))
# 广西的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_geo_analysis = df.groupBy('地址').agg(
F.count('企业营业收入').alias('企业数量'),
F.round(F.sum('企业营业收入')).alias('企业营业收入'),
F.round(F.sum('企业净利润')).alias('企业净利润'),
)
# 按企业数量降序排列
df_geo_analysis = df_geo_analysis.orderBy('企业数量', ascending=False)
# 将结果转换为Pandas DataFrame
pandas_geo_df = df_geo_analysis.toPandas()
# 定义权重
weight_count = 0.4
weight_income = 0.4
weight_profit = 0.2
# 归一化数据
max_count = df_geo_analysis.agg(F.max('企业数量')).collect()[0][0]
max_income = df_geo_analysis.agg(F.max('企业营业收入')).collect()[0][0]
max_profit = df_geo_analysis.agg(F.max('企业净利润')).collect()[0][0]
# 计算地域经济活力指数
df_geo_analysis = df_geo_analysis.withColumn(
'经济活力指数',
F.round(
weight_count * (F.col('企业数量') / max_count) +
weight_income * (F.col('企业营业收入') / max_income) +
weight_profit * (F.col('企业净利润') / max_profit),
2)
)
# 按地域经济活力指数降序排列
df_geo_analysis = df_geo_analysis.orderBy('经济活力指数', ascending=False)
pandas_geo_df = df_geo_analysis.toPandas()
# 排序 DataFrame按照经济活力指数降序排列
sorted_pandas_geo_df_economic = pandas_geo_df.sort_values(by='经济活力指数', ascending=False)
# 使用 Pyecharts 创建条形图
lyh_code02_bar = (
Bar()
.add_xaxis(sorted_pandas_geo_df_economic['地址'].tolist())
.add_yaxis('经济活力指数', sorted_pandas_geo_df_economic['经济活力指数'].tolist(),
label_opts=opts.LabelOpts(position='inside'))
.set_series_opts(label_opts=opts.LabelOpts(is_show=True, position='top', formatter='{c}'))
.set_global_opts(
title_opts=opts.TitleOpts(title="地域经济活力指数(排序后)"),
xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-30, font_size=10)),
)
)
return lyh_code02_bar

@ -0,0 +1,281 @@
import happybase
from pyspark.sql import SparkSession, Row
import os
from pyspark.sql import functions as F
from pyspark.sql.functions import when, regexp_extract
from pyecharts.charts import Bar
from pyecharts import options as opts
# 指定python环境
os.environ['PYSPARK_PYTHON'] = 'D:\python\python3.11.4\python.exe'
os.environ['JAVA_HOME'] = "D:\jdk\jdk-17.0.8" # 记得把地址改成自己的
# -投资潜力: 通过比较不同地域的企业数量和其资产总计、净利润,你可以评估各地的投资潜力。一些地区可能因为较高的盈利能力或者潜在市场需求而更具吸引力。
def lyh_code03():
# 创建Spark会话
spark = SparkSession.builder.appName("HBaseDataLoading").master('local').getOrCreate()
# 连接到HBase
connection = happybase.Connection('192.168.23.128')
# 获取表
table = connection.table('bigdata')
# 定义列名
columns = ['info:地址', 'info:净利润', 'info:年末资产总计']
# 查询数据
data = []
for key, row in table.scan(columns=[col.encode('utf-8') for col in columns]):
row_data = {
'序号': key.decode(),
'地址': row['info:地址'.encode('utf-8')].decode(),
'净利润': row['info:净利润'.encode('utf-8')].decode(),
'年末资产总计': row['info:年末资产总计'.encode('utf-8')].decode()
}
data.append(row_data)
# 关闭连接
connection.close()
# 将数据转换为Spark DataFrame
df = spark.createDataFrame([Row(**{k: str(v) for k, v in i.items()}) for i in data])
df = df.filter(~df['地址'].isin(['NULL', 'qingxiubgs2014@sina.com', '防城市', 'saddress']))
# 去除重复项
df = df.dropDuplicates()
# 需要的列名
df = df.select('地址', '净利润', '年末资产总计') # 修改这里的列名为实际的列名
# 创建一个正则表达式,匹配"市"及其之前的所有字符
pattern = "(.*市)"
# 使用regexp_extract函数提取地址中的城市名如果没有匹配到则保持原始地址不变
df = df.withColumn('地址',
when(df['地址'].rlike(pattern), regexp_extract(df['地址'], pattern, 1)).otherwise(df['地址']))
# 检查"地址"列是否以"广西"开头,如果是,则去掉前两个字符,否则保持原始地址不变
df = df.withColumn('地址', when(df['地址'].startswith('广西'), df['地址'].substr(3, 50)).otherwise(df['地址']))
# 广西的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_investment_potential = df.groupBy('地址').agg(
F.count('净利润').alias('企业数量'),
F.round(F.sum('净利润')).alias('净利润'),
F.round(F.sum('年末资产总计')).alias('年末资产总计'),
F.round(F.avg('年末资产总计')).alias('平均年末资产总计')
)
# 将结果转换为Pandas DataFrame
pandas_geo_df = df_investment_potential.toPandas()
# 定义权重
weight_count = 0.4
weight_income = 0.4
weight_profit = 0.2
# 归一化数据
max_count = df_investment_potential.agg(F.max('企业数量')).collect()[0][0]
max_income = df_investment_potential.agg(F.max('年末资产总计')).collect()[0][0]
max_profit = df_investment_potential.agg(F.max('净利润')).collect()[0][0]
# 计算地域经济活力指数
df_geo_analysis = df_investment_potential.withColumn(
'投资潜力',
F.round(
weight_count * (F.col('企业数量') / max_count) +
weight_income * (F.col('年末资产总计') / max_income) +
weight_profit * (F.col('净利润') / max_profit),
2)
)
# 按地域经济活力指数降序排列
df_geo_analysis = df_geo_analysis.orderBy('投资潜力', ascending=False)
pandas_geo_df = df_geo_analysis.toPandas()
# 排序 DataFrame按照投资潜力降序排列
sorted_pandas_invest_df = pandas_geo_df.sort_values(by='投资潜力', ascending=False)
# 使用过滤后的数据创建 Pyecharts 条形图
lyh_code03_bar = (
Bar()
.add_xaxis(sorted_pandas_invest_df['地址'].tolist())
.add_yaxis('投资潜力', sorted_pandas_invest_df['投资潜力'].tolist(),
label_opts=opts.LabelOpts(position='inside'))
.set_series_opts(label_opts=opts.LabelOpts(is_show=True, position='top', formatter='{c}'))
.set_global_opts(
title_opts=opts.TitleOpts(title="地域投资潜力"),
xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-30, font_size=10)),
)
)
return lyh_code03_bar

@ -0,0 +1,306 @@
from pyecharts.charts import Grid, Page
from pyecharts import options as opts
from cky_code01 import cky_code01
from cky_code02 import cky_code02
from cky_code03 import cky_code03
from lyh_code01 import lyh_code01
from lyh_code02 import lyh_code02
from lyh_code03 import lyh_code03
from xja_code01 import xja_code01
from xja_code02 import xja_code02
from xja_code03 import xja_code03
def result_image01():
cky_code01_bar = cky_code01()
cky_code02_bar, cky_code02_pie = cky_code02()
lyh_code01_bar = lyh_code01()
lyh_code02_bar = lyh_code02()
lyh_code03_bar = lyh_code03()
line = xja_code02()
bar = xja_code03()
cky_code01_bar.set_global_opts(
title_opts=opts.TitleOpts(
title="2018年广西高新区企业数量地区分布图",
pos_left="5%"
),
legend_opts=opts.LegendOpts(
orient="horizontal", # 图例方向,可以设置为 "horizontal" 或 "vertical"
pos_left="35%", # 图例左侧位置
),
)
cky_code02_bar.set_global_opts(
title_opts=opts.TitleOpts(
title="2018年广西外资企业引进收入对比图",
pos_left="54%"
),
legend_opts=opts.LegendOpts(
orient="horizontal", # 图例方向,可以设置为 "horizontal" 或 "vertical"
pos_right="5%", # 图例左侧位置
),
)
lyh_code01_bar.set_global_opts(
title_opts=opts.TitleOpts(
title="2018年广西各地市创新能力分析图",
pos_left="5%",
pos_top="500px",
),
legend_opts=opts.LegendOpts(
orient="horizontal", # 图例方向,可以设置为 "horizontal" 或 "vertical"
pos_left="35%", # 图例左侧位置
pos_top="500px",
),
)
lyh_code02_bar.set_global_opts(
title_opts=opts.TitleOpts(
title="2018年广西各地市地域经济活力分析图",
pos_left="54%",
pos_top="500px",
),
legend_opts=opts.LegendOpts(
orient="horizontal", # 图例方向,可以设置为 "horizontal" 或 "vertical"
pos_right="5%", # 图例左侧位置
pos_top="500px",
),
)
lyh_code03_bar.set_global_opts(
title_opts=opts.TitleOpts(
title="2018年广西各地市投资潜力分析图",
pos_left="5%",
pos_top="1000px",
),
legend_opts=opts.LegendOpts(
orient="horizontal", # 图例方向,可以设置为 "horizontal" 或 "vertical"
pos_left="35%", # 图例左侧位置
pos_top="1000px",
),
)
bar.set_global_opts(
title_opts=opts.TitleOpts(
title="2018年广西各地市研发总投入对比图",
pos_left="54%",
pos_top="1000px",
),
legend_opts=opts.LegendOpts(
orient="horizontal", # 图例方向,可以设置为 "horizontal" 或 "vertical"
pos_right="5%", # 图例左侧位置
pos_top="1000px",
),
)
line.set_global_opts(
title_opts=opts.TitleOpts(
title="2018年广西各地市研发投入比分析图",
pos_left="25%",
pos_top="1500px",
),
legend_opts=opts.LegendOpts(
orient="horizontal", # 图例方向,可以设置为 "horizontal" 或 "vertical"
pos_right="25%", # 图例左侧位置
pos_top="1500px",
),
)
cky_code02_pie.set_global_opts(
title_opts=opts.TitleOpts(
title="2018年广西各地市外企数量分布图",
pos_left="25%",
pos_top="2000px",
),
legend_opts=opts.LegendOpts(
orient="horizontal", # 图例方向,可以设置为 "horizontal" 或 "vertical"
pos_right="35%", # 图例左侧位置
pos_top="2000px",
),
)
# 使用 Grid 将多个图表按网格布局组织在一起
grid = (
Grid(init_opts=opts.InitOpts(width="100%",height="2600px",bg_color="rgb(255, 255, 240)")) # 设置整个 Grid 区域的初始宽度和高度
.add(cky_code01_bar, grid_opts=opts.GridOpts(pos_left="5%", pos_right="55%", pos_top="50px", pos_bottom="2150px"))
.add(cky_code02_bar, grid_opts=opts.GridOpts(pos_left="55%", pos_right="5%", pos_top="50px", pos_bottom="2150px"))
.add(lyh_code01_bar, grid_opts=opts.GridOpts(pos_left="5%", pos_right="55%", pos_top="550px", pos_bottom="1650px"))
.add(lyh_code02_bar, grid_opts=opts.GridOpts(pos_left="55%", pos_right="5%", pos_top="550px", pos_bottom="1650px"))
.add(lyh_code03_bar, grid_opts=opts.GridOpts(pos_left="5%", pos_right="55%", pos_top="1050px", pos_bottom="1150px"))
.add(bar, grid_opts=opts.GridOpts(pos_left="55%", pos_right="5%", pos_top="1050px", pos_bottom="1150px"))
.add(line, grid_opts=opts.GridOpts(pos_left="25%", pos_right="25%", pos_top="1550px", pos_bottom="650px"))
.add(cky_code02_pie, grid_opts=opts.GridOpts(pos_left="25%", pos_right="25%", pos_top="2050px", pos_bottom="450px"))
)
# 生成 HTML 文件
grid.render('result_image01.html')
def result_image02():
cky_code03_map = cky_code03()
xja_code01_map = xja_code01()
# 将图表添加到 Page 中
page = Page(layout=Page.SimplePageLayout)
page.add(cky_code03_map)
page.add(xja_code01_map)
# 生成 HTML 文件
page.render('result_image02.html')
# 广西企业产业类型分布
def industry_type():
cky_code03().render('industry_type.html')
# 广西各地市整体经济发展
def whole_development():
lyh_code01_bar = lyh_code01()
lyh_code02_bar = lyh_code02()
lyh_code03_bar = lyh_code03()
lyh_code01_bar.set_global_opts(
title_opts=opts.TitleOpts(
title="2018年广西各地市创新能力分析图",
pos_left="5%"
),
legend_opts=opts.LegendOpts(
orient="horizontal", # 图例方向,可以设置为 "horizontal" 或 "vertical"
pos_left="35%", # 图例左侧位置
),
)
lyh_code02_bar.set_global_opts(
title_opts=opts.TitleOpts(
title="2018年广西各地市地域经济活力分析图",
pos_left="54%"
),
legend_opts=opts.LegendOpts(
orient="horizontal", # 图例方向,可以设置为 "horizontal" 或 "vertical"
pos_right="5%", # 图例左侧位置
),
)
lyh_code03_bar.set_global_opts(
title_opts=opts.TitleOpts(
title="2018年广西各地市投资潜力分析图",
pos_left="30%",
pos_top="500px",
),
legend_opts=opts.LegendOpts(
orient="horizontal", # 图例方向,可以设置为 "horizontal" 或 "vertical"
pos_right="30%", # 图例左侧位置
pos_top="500px",
),
)
grid = (
Grid(init_opts=opts.InitOpts(width="100%", height="1000px")) # 设置整个 Grid 区域的初始宽度和高度
.add(lyh_code01_bar,grid_opts=opts.GridOpts(pos_left="5%", pos_right="55%", pos_top="50px", pos_bottom="550px"))
.add(lyh_code02_bar,grid_opts=opts.GridOpts(pos_left="55%", pos_right="5%", pos_top="50px", pos_bottom="550px"))
.add(lyh_code03_bar,grid_opts=opts.GridOpts(pos_left="30%", pos_right="30%", pos_top="550px", pos_bottom="50px"))
)
# 生成 HTML 文件
grid.render('whole_development.html')
# 广西外资企业发展情况
def foreign_capital_development():
cky_code02_bar1, cky_code02_bar2, cky_code02_pie = cky_code02()
cky_code02_bar1.set_global_opts(
title_opts=opts.TitleOpts(
title="2018年广西外资企业引进总营业收入图",
pos_left="5%"
),
legend_opts=opts.LegendOpts(
orient="horizontal", # 图例方向,可以设置为 "horizontal" 或 "vertical"
pos_left="35%", # 图例左侧位置
),
)
cky_code02_bar2.set_global_opts(
title_opts=opts.TitleOpts(
title="2018年广西外资企业引进总净利润图",
pos_left="54%"
),
legend_opts=opts.LegendOpts(
orient="horizontal", # 图例方向,可以设置为 "horizontal" 或 "vertical"
pos_right="5%", # 图例左侧位置
),
)
cky_code02_pie.set_global_opts(
title_opts=opts.TitleOpts(
title="2018年广西各地市外企数量分布图",
pos_left="25%",
pos_top="550px",
),
legend_opts=opts.LegendOpts(
orient="horizontal", # 图例方向,可以设置为 "horizontal" 或 "vertical"
pos_right="50%", # 图例左侧位置
pos_top="550px",
),
)
grid = (
Grid(init_opts=opts.InitOpts(width="100%", height="1100px")) # 设置整个 Grid 区域的初始宽度和高度
.add(cky_code02_bar1,grid_opts=opts.GridOpts(pos_left="5%", pos_right="55%", pos_top="50px", pos_bottom="650px"))
.add(cky_code02_bar2,grid_opts=opts.GridOpts(pos_left="55%", pos_right="5%", pos_top="50px", pos_bottom="650px"))
.add(cky_code02_pie,grid_opts=opts.GridOpts(pos_left="25%", pos_right="25%", pos_top="550px", pos_bottom="50px"))
)
# 生成 HTML 文件
grid.render('foreign_capital_development.html')
# 广西各地高新区企业情况
def Hi_tech_Zone():
cky_code01_bar = cky_code01()
cky_code01_bar.set_global_opts(
title_opts=opts.TitleOpts(
title="2018年广西高新区企业数量地区分布图",
pos_left="30%"
),
legend_opts=opts.LegendOpts(
orient="horizontal", # 图例方向,可以设置为 "horizontal" 或 "vertical"
pos_right="30%", # 图例左侧位置
),
)
grid = (
Grid(init_opts=opts.InitOpts(width="100%")) # 设置整个 Grid 区域的初始宽度和高度
.add(cky_code01_bar,grid_opts=opts.GridOpts(pos_left="30%", pos_right="30%", pos_top="50px", pos_bottom="50px"))
)
# 生成 HTML 文件
grid.render('Hi_tech_Zone.html')
# 广西各市潜力发展情况
def potential_development():
xja_code01().render('potential_development.html')
# 广西各市研发投入情况
def R_D_investment():
line = xja_code02()
bar = xja_code03()
bar.set_global_opts(
title_opts=opts.TitleOpts(
title="2018年广西各地市研发总投入对比图",
pos_left="5%"
),
legend_opts=opts.LegendOpts(
orient="horizontal", # 图例方向,可以设置为 "horizontal" 或 "vertical"
pos_left="35%", # 图例左侧位置
),
)
line.set_global_opts(
title_opts=opts.TitleOpts(
title="2018年广西各地市研发投入比分析图",
pos_left="54%"
),
legend_opts=opts.LegendOpts(
orient="horizontal", # 图例方向,可以设置为 "horizontal" 或 "vertical"
pos_right="5%", # 图例左侧位置
),
)
grid = (
Grid(init_opts=opts.InitOpts(width="100%")) # 设置整个 Grid 区域的初始宽度和高度
.add(bar,grid_opts=opts.GridOpts(pos_left="5%", pos_right="55%", pos_top="50px", pos_bottom="50px"))
.add(line,grid_opts=opts.GridOpts(pos_left="55%", pos_right="5%", pos_top="50px", pos_bottom="50px"))
)
grid.render('R_D_investment.html')
industry_type()

@ -0,0 +1,609 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Awesome-pyecharts</title>
<script type="text/javascript" src="https://assets.pyecharts.org/assets/v5/echarts.min.js"></script>
<script type="text/javascript" src="https://assets.pyecharts.org/assets/v5/maps/guangxi.js"></script>
</head>
<body >
<style>.box { justify-content:center; display:flex; flex-wrap:wrap; } </style>
<div class="box">
<div id="0e897bdac701423fb498d758ea42d111" class="chart-container" style="width:900px; height:500px; "></div>
<script>
var chart_0e897bdac701423fb498d758ea42d111 = echarts.init(
document.getElementById('0e897bdac701423fb498d758ea42d111'), 'white', {renderer: 'canvas'});
var option_0e897bdac701423fb498d758ea42d111 = {
"animation": true,
"animationThreshold": 2000,
"animationDuration": 1000,
"animationEasing": "cubicOut",
"animationDelay": 0,
"animationDurationUpdate": 300,
"animationEasingUpdate": "cubicOut",
"animationDelayUpdate": 0,
"aria": {
"enabled": false
},
"color": [
"#5470c6",
"#91cc75",
"#fac858",
"#ee6666",
"#73c0de",
"#3ba272",
"#fc8452",
"#9a60b4",
"#ea7ccc"
],
"series": [
{
"type": "map",
"name": "\u603b\u51c0\u5229\u6da6\uff08\u5343\u5143\uff09",
"label": {
"show": true,
"margin": 8
},
"map": "\u5e7f\u897f",
"data": [
{
"name": "\u5357\u5b81\u5e02",
"value": 5241781.91
},
{
"name": "\u9632\u57ce\u6e2f\u5e02",
"value": 3794425.99
},
{
"name": "\u767e\u8272\u5e02",
"value": 2657971.63
},
{
"name": "\u7389\u6797\u5e02",
"value": 1241206.9
},
{
"name": "\u6cb3\u6c60\u5e02",
"value": 384359.25
},
{
"name": "\u67f3\u5dde\u5e02",
"value": 7257202.75
},
{
"name": "\u5d07\u5de6\u5e02",
"value": 365808.74
},
{
"name": "\u6765\u5bbe\u5e02",
"value": -297085.32
},
{
"name": "\u5317\u6d77\u5e02",
"value": 621361.49
},
{
"name": "\u6842\u6797\u5e02",
"value": 2292201.07
},
{
"name": "\u94a6\u5dde\u5e02",
"value": 934534.35
},
{
"name": "\u8d35\u6e2f\u5e02",
"value": 178624.06
},
{
"name": "\u8d3a\u5dde\u5e02",
"value": 301933.08
},
{
"name": "\u68a7\u5dde\u5e02",
"value": 1259616.47
}
],
"roam": true,
"aspectScale": 0.75,
"nameProperty": "name",
"selectedMode": false,
"zoom": 1,
"zlevel": 0,
"z": 2,
"seriesLayoutBy": "column",
"datasetIndex": 0,
"mapValueCalculation": "sum",
"showLegendSymbol": true,
"emphasis": {}
}
],
"legend": [
{
"data": [
"\u603b\u51c0\u5229\u6da6\uff08\u5343\u5143\uff09"
],
"selected": {},
"show": true,
"padding": 5,
"itemGap": 10,
"itemWidth": 25,
"itemHeight": 14,
"backgroundColor": "transparent",
"borderColor": "#ccc",
"borderWidth": 1,
"borderRadius": 0,
"pageButtonItemGap": 5,
"pageButtonPosition": "end",
"pageFormatter": "{current}/{total}",
"pageIconColor": "#2f4554",
"pageIconInactiveColor": "#aaa",
"pageIconSize": 15,
"animationDurationUpdate": 800,
"selector": false,
"selectorPosition": "auto",
"selectorItemGap": 7,
"selectorButtonGap": 10
}
],
"tooltip": {
"show": true,
"trigger": "item",
"triggerOn": "mousemove|click",
"axisPointer": {
"type": "line"
},
"showContent": true,
"alwaysShowContent": false,
"showDelay": 0,
"hideDelay": 100,
"enterable": false,
"confine": false,
"appendToBody": false,
"transitionDuration": 0.4,
"textStyle": {
"fontSize": 14
},
"borderWidth": 0,
"padding": 5,
"order": "seriesAsc"
},
"title": [
{
"show": true,
"text": "2018\u5e74\u5e7f\u897f\u4f01\u4e1a\u603b\u51c0\u5229\u6da6\u5bf9\u6bd4\u56fe",
"target": "blank",
"subtarget": "blank",
"padding": 5,
"itemGap": 10,
"textAlign": "auto",
"textVerticalAlign": "auto",
"triggerEvent": false
}
],
"visualMap": {
"show": true,
"type": "continuous",
"min": 0,
"max": 7257202.75,
"inRange": {
"color": [
"#50a3ba",
"#eac763",
"#d94e5d"
]
},
"calculable": true,
"inverse": false,
"splitNumber": 5,
"hoverLink": true,
"orient": "vertical",
"padding": 5,
"showLabel": true,
"itemWidth": 20,
"itemHeight": 140,
"borderWidth": 0
}
};
chart_0e897bdac701423fb498d758ea42d111.setOption(option_0e897bdac701423fb498d758ea42d111);
</script>
<br/> <div id="c108d6d95b224e5caf6e15da383f3a87" class="chart-container" style="width:900px; height:500px; "></div>
<script>
var chart_c108d6d95b224e5caf6e15da383f3a87 = echarts.init(
document.getElementById('c108d6d95b224e5caf6e15da383f3a87'), 'white', {renderer: 'canvas'});
var option_c108d6d95b224e5caf6e15da383f3a87 = {
"animation": true,
"animationThreshold": 2000,
"animationDuration": 1000,
"animationEasing": "cubicOut",
"animationDelay": 0,
"animationDurationUpdate": 300,
"animationEasingUpdate": "cubicOut",
"animationDelayUpdate": 0,
"aria": {
"enabled": false
},
"color": [
"#5470c6",
"#91cc75",
"#fac858",
"#ee6666",
"#73c0de",
"#3ba272",
"#fc8452",
"#9a60b4",
"#ea7ccc"
],
"series": [
{
"type": "map",
"name": "\u603b\u8425\u4e1a\u6536\u5165\uff08\u5343\u5143\uff09",
"label": {
"show": true,
"margin": 8
},
"map": "\u5e7f\u897f",
"data": [
{
"name": "\u5357\u5b81\u5e02",
"value": 151441450.9
},
{
"name": "\u9632\u57ce\u6e2f\u5e02",
"value": 49254099.09
},
{
"name": "\u767e\u8272\u5e02",
"value": 32417584.56
},
{
"name": "\u7389\u6797\u5e02",
"value": 28498772.95
},
{
"name": "\u6cb3\u6c60\u5e02",
"value": 13119336.91
},
{
"name": "\u67f3\u5dde\u5e02",
"value": 229884654.61
},
{
"name": "\u5d07\u5de6\u5e02",
"value": 8330674.34
},
{
"name": "\u6765\u5bbe\u5e02",
"value": 6505791.99
},
{
"name": "\u5317\u6d77\u5e02",
"value": 52442836.72
},
{
"name": "\u6842\u6797\u5e02",
"value": 32689255.02
},
{
"name": "\u94a6\u5dde\u5e02",
"value": 16437820.97
},
{
"name": "\u8d35\u6e2f\u5e02",
"value": 4830641.02
},
{
"name": "\u8d3a\u5dde\u5e02",
"value": 6367779.99
},
{
"name": "\u68a7\u5dde\u5e02",
"value": 12843029.64
}
],
"roam": true,
"aspectScale": 0.75,
"nameProperty": "name",
"selectedMode": false,
"zoom": 1,
"zlevel": 0,
"z": 2,
"seriesLayoutBy": "column",
"datasetIndex": 0,
"mapValueCalculation": "sum",
"showLegendSymbol": true,
"emphasis": {}
}
],
"legend": [
{
"data": [
"\u603b\u8425\u4e1a\u6536\u5165\uff08\u5343\u5143\uff09"
],
"selected": {},
"show": true,
"padding": 5,
"itemGap": 10,
"itemWidth": 25,
"itemHeight": 14,
"backgroundColor": "transparent",
"borderColor": "#ccc",
"borderWidth": 1,
"borderRadius": 0,
"pageButtonItemGap": 5,
"pageButtonPosition": "end",
"pageFormatter": "{current}/{total}",
"pageIconColor": "#2f4554",
"pageIconInactiveColor": "#aaa",
"pageIconSize": 15,
"animationDurationUpdate": 800,
"selector": false,
"selectorPosition": "auto",
"selectorItemGap": 7,
"selectorButtonGap": 10
}
],
"tooltip": {
"show": true,
"trigger": "item",
"triggerOn": "mousemove|click",
"axisPointer": {
"type": "line"
},
"showContent": true,
"alwaysShowContent": false,
"showDelay": 0,
"hideDelay": 100,
"enterable": false,
"confine": false,
"appendToBody": false,
"transitionDuration": 0.4,
"textStyle": {
"fontSize": 14
},
"borderWidth": 0,
"padding": 5,
"order": "seriesAsc"
},
"title": [
{
"show": true,
"text": "2018\u5e74\u5e7f\u897f\u4f01\u4e1a\u603b\u8425\u4e1a\u6536\u5165\u5bf9\u6bd4\u56fe",
"target": "blank",
"subtarget": "blank",
"padding": 5,
"itemGap": 10,
"textAlign": "auto",
"textVerticalAlign": "auto",
"triggerEvent": false
}
],
"visualMap": {
"show": true,
"type": "continuous",
"min": 0,
"max": 229884654.61,
"inRange": {
"color": [
"#50a3ba",
"#eac763",
"#d94e5d"
]
},
"calculable": true,
"inverse": false,
"splitNumber": 5,
"hoverLink": true,
"orient": "vertical",
"padding": 5,
"showLabel": true,
"itemWidth": 20,
"itemHeight": 140,
"borderWidth": 0
}
};
chart_c108d6d95b224e5caf6e15da383f3a87.setOption(option_c108d6d95b224e5caf6e15da383f3a87);
</script>
<br/> <div id="e5e216101fcc4e61b1e2044795921157" class="chart-container" style="width:900px; height:500px; "></div>
<script>
var chart_e5e216101fcc4e61b1e2044795921157 = echarts.init(
document.getElementById('e5e216101fcc4e61b1e2044795921157'), 'white', {renderer: 'canvas'});
var option_e5e216101fcc4e61b1e2044795921157 = {
"animation": true,
"animationThreshold": 2000,
"animationDuration": 1000,
"animationEasing": "cubicOut",
"animationDelay": 0,
"animationDurationUpdate": 300,
"animationEasingUpdate": "cubicOut",
"animationDelayUpdate": 0,
"aria": {
"enabled": false
},
"color": [
"#5470c6",
"#91cc75",
"#fac858",
"#ee6666",
"#73c0de",
"#3ba272",
"#fc8452",
"#9a60b4",
"#ea7ccc"
],
"series": [
{
"type": "map",
"name": "\u6570\u91cf",
"label": {
"show": true,
"margin": 8
},
"map": "\u5e7f\u897f",
"data": [
{
"name": "\u5357\u5b81\u5e02",
"value": 751
},
{
"name": "\u9632\u57ce\u6e2f\u5e02",
"value": 26
},
{
"name": "\u767e\u8272\u5e02",
"value": 42
},
{
"name": "\u7389\u6797\u5e02",
"value": 53
},
{
"name": "\u6cb3\u6c60\u5e02",
"value": 9
},
{
"name": "\u67f3\u5dde\u5e02",
"value": 440
},
{
"name": "\u5d07\u5de6\u5e02",
"value": 28
},
{
"name": "\u6765\u5bbe\u5e02",
"value": 26
},
{
"name": "\u5317\u6d77\u5e02",
"value": 56
},
{
"name": "\u6842\u6797\u5e02",
"value": 236
},
{
"name": "\u94a6\u5dde\u5e02",
"value": 66
},
{
"name": "\u8d35\u6e2f\u5e02",
"value": 39
},
{
"name": "\u8d3a\u5dde\u5e02",
"value": 21
},
{
"name": "\u68a7\u5dde\u5e02",
"value": 69
}
],
"roam": true,
"aspectScale": 0.75,
"nameProperty": "name",
"selectedMode": false,
"zoom": 1,
"zlevel": 0,
"z": 2,
"seriesLayoutBy": "column",
"datasetIndex": 0,
"mapValueCalculation": "sum",
"showLegendSymbol": true,
"emphasis": {}
}
],
"legend": [
{
"data": [
"\u6570\u91cf"
],
"selected": {},
"show": true,
"padding": 5,
"itemGap": 10,
"itemWidth": 25,
"itemHeight": 14,
"backgroundColor": "transparent",
"borderColor": "#ccc",
"borderWidth": 1,
"borderRadius": 0,
"pageButtonItemGap": 5,
"pageButtonPosition": "end",
"pageFormatter": "{current}/{total}",
"pageIconColor": "#2f4554",
"pageIconInactiveColor": "#aaa",
"pageIconSize": 15,
"animationDurationUpdate": 800,
"selector": false,
"selectorPosition": "auto",
"selectorItemGap": 7,
"selectorButtonGap": 10
}
],
"tooltip": {
"show": true,
"trigger": "item",
"triggerOn": "mousemove|click",
"axisPointer": {
"type": "line"
},
"showContent": true,
"alwaysShowContent": false,
"showDelay": 0,
"hideDelay": 100,
"enterable": false,
"confine": false,
"appendToBody": false,
"transitionDuration": 0.4,
"textStyle": {
"fontSize": 14
},
"borderWidth": 0,
"padding": 5,
"order": "seriesAsc"
},
"title": [
{
"show": true,
"text": "2018\u5e74\u5e7f\u897f\u4f01\u4e1a\u6570\u91cf\u5206\u5e03\u56fe",
"target": "blank",
"subtarget": "blank",
"padding": 5,
"itemGap": 10,
"textAlign": "auto",
"textVerticalAlign": "auto",
"triggerEvent": false
}
],
"visualMap": {
"show": true,
"type": "continuous",
"min": 0,
"max": 751,
"inRange": {
"color": [
"#50a3ba",
"#eac763",
"#d94e5d"
]
},
"calculable": true,
"inverse": false,
"splitNumber": 5,
"hoverLink": true,
"orient": "vertical",
"padding": 5,
"showLabel": true,
"itemWidth": 20,
"itemHeight": 140,
"borderWidth": 0
}
};
chart_e5e216101fcc4e61b1e2044795921157.setOption(option_e5e216101fcc4e61b1e2044795921157);
</script>
<br/> </div>
<script>
</script>
</body>
</html>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -0,0 +1,91 @@
import pandas as pd
from pyspark.sql import SparkSession
from pyspark.sql import functions as F
import tkinter as tk
from tkinter import filedialog
import os
os.environ['JAVA_HOME'] = "D:\jdk\jdk-17.0.8" # 记得把地址改成自己的
selected_file_path = ""
# 打开选择文件函数
def select_and_open_excel_file():
# 创建主窗口
root = tk.Tk()
def on_button_click():
global selected_file_path
# 调用文件选择对话框
file_path = filedialog.askopenfilename(
title="选择Excel文件",
filetypes=[("Excel files", "*.xlsx;*.xls"), ("All files", "*.*")]
)
# 用户取消选择file_path 为空
if not file_path:
print("用户取消选择文件")
return
# 这里可以使用 file_path 来获取选择的 Excel 文件路径
print("选择的Excel文件路径:", file_path)
selected_file_path = file_path
root.destroy()
# 创建按钮
button = tk.Button(root, text="选择文件", command=on_button_click)
button.pack(pady=20)
# 进入主循环
root.mainloop()
# 调用函数
select_and_open_excel_file()
print(selected_file_path)
# 读取Excel文件
excel_data = pd.read_excel(selected_file_path)
# 将数据写入CSV文件
excel_data.to_csv("excel_data.csv", index=False)
# 创建Spark会话
spark = SparkSession.builder.appName("ExcelDataCleaning").getOrCreate()
# 读取CSV文件为DataFrame
df = spark.read.csv("excel_data.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({'主要业务活动或主要产品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('washData.csv', index=False)

@ -0,0 +1,584 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Awesome-pyecharts</title>
<script type="text/javascript" src="https://assets.pyecharts.org/assets/v5/echarts.min.js"></script>
</head>
<body >
<div id="76e98bf0e56d4ee99d70eefd2c0cce7c" class="chart-container" style="width:100%; height:1000px; "></div>
<script>
var chart_76e98bf0e56d4ee99d70eefd2c0cce7c = echarts.init(
document.getElementById('76e98bf0e56d4ee99d70eefd2c0cce7c'), 'white', {renderer: 'canvas'});
var option_76e98bf0e56d4ee99d70eefd2c0cce7c = {
"animation": true,
"animationThreshold": 2000,
"animationDuration": 1000,
"animationEasing": "cubicOut",
"animationDelay": 0,
"animationDurationUpdate": 300,
"animationEasingUpdate": "cubicOut",
"animationDelayUpdate": 0,
"aria": {
"enabled": false
},
"color": [
"#5470c6",
"#91cc75",
"#fac858",
"#ee6666",
"#73c0de",
"#3ba272",
"#fc8452",
"#9a60b4",
"#ea7ccc"
],
"series": [
{
"type": "bar",
"name": "\u521b\u65b0\u80fd\u529b",
"xAxisIndex": 0,
"yAxisIndex": 0,
"legendHoverLink": true,
"data": [
0.91922,
0.29186,
0.07183,
0.04824,
0.01206,
0.01148,
0.01124,
0.00667,
0.00616,
0.00555,
0.00421,
0.00305,
0.00256,
0.00207
],
"realtimeSort": false,
"showBackground": false,
"stackStrategy": "samesign",
"cursor": "pointer",
"barMinHeight": 0,
"barCategoryGap": "20%",
"barGap": "30%",
"large": false,
"largeThreshold": 400,
"seriesLayoutBy": "column",
"datasetIndex": 0,
"clip": true,
"zlevel": 0,
"z": 2,
"label": {
"show": true,
"position": "top",
"margin": 8,
"formatter": "{c}"
},
"rippleEffect": {
"show": true,
"brushType": "stroke",
"scale": 2.5,
"period": 4
}
},
{
"type": "bar",
"name": "\u7ecf\u6d4e\u6d3b\u529b\u6307\u6570",
"xAxisIndex": 1,
"yAxisIndex": 1,
"legendHoverLink": true,
"data": [
0.83,
0.81,
0.25,
0.2,
0.15,
0.14,
0.11,
0.09,
0.09,
0.04,
0.04,
0.03,
0.03,
0.02
],
"realtimeSort": false,
"showBackground": false,
"stackStrategy": "samesign",
"cursor": "pointer",
"barMinHeight": 0,
"barCategoryGap": "20%",
"barGap": "30%",
"large": false,
"largeThreshold": 400,
"seriesLayoutBy": "column",
"datasetIndex": 0,
"clip": true,
"zlevel": 0,
"z": 2,
"label": {
"show": true,
"position": "top",
"margin": 8,
"formatter": "{c}"
},
"rippleEffect": {
"show": true,
"brushType": "stroke",
"scale": 2.5,
"period": 4
}
},
{
"type": "bar",
"name": "\u6295\u8d44\u6f5c\u529b",
"xAxisIndex": 2,
"yAxisIndex": 2,
"legendHoverLink": true,
"data": [
0.91,
0.83,
0.28,
0.22,
0.19,
0.14,
0.14,
0.11,
0.11,
0.06,
0.04,
0.04,
0.03,
0.03
],
"realtimeSort": false,
"showBackground": false,
"stackStrategy": "samesign",
"cursor": "pointer",
"barMinHeight": 0,
"barCategoryGap": "20%",
"barGap": "30%",
"large": false,
"largeThreshold": 400,
"seriesLayoutBy": "column",
"datasetIndex": 0,
"clip": true,
"zlevel": 0,
"z": 2,
"label": {
"show": true,
"position": "top",
"margin": 8,
"formatter": "{c}"
},
"rippleEffect": {
"show": true,
"brushType": "stroke",
"scale": 2.5,
"period": 4
}
}
],
"legend": [
{
"data": [
"\u521b\u65b0\u80fd\u529b"
],
"selected": {},
"show": true,
"padding": 5,
"itemGap": 10,
"itemWidth": 25,
"itemHeight": 14,
"backgroundColor": "transparent",
"borderColor": "#ccc",
"borderWidth": 1,
"borderRadius": 0,
"pageButtonItemGap": 5,
"pageButtonPosition": "end",
"pageFormatter": "{current}/{total}",
"pageIconColor": "#2f4554",
"pageIconInactiveColor": "#aaa",
"pageIconSize": 15,
"animationDurationUpdate": 800,
"selector": false,
"selectorPosition": "auto",
"selectorItemGap": 7,
"selectorButtonGap": 10,
"left": "35%",
"orient": "horizontal"
},
{
"data": [
"\u7ecf\u6d4e\u6d3b\u529b\u6307\u6570"
],
"selected": {},
"show": true,
"padding": 5,
"itemGap": 10,
"itemWidth": 25,
"itemHeight": 14,
"backgroundColor": "transparent",
"borderColor": "#ccc",
"borderWidth": 1,
"borderRadius": 0,
"pageButtonItemGap": 5,
"pageButtonPosition": "end",
"pageFormatter": "{current}/{total}",
"pageIconColor": "#2f4554",
"pageIconInactiveColor": "#aaa",
"pageIconSize": 15,
"animationDurationUpdate": 800,
"selector": false,
"selectorPosition": "auto",
"selectorItemGap": 7,
"selectorButtonGap": 10,
"right": "5%",
"orient": "horizontal"
},
{
"data": [
"\u6295\u8d44\u6f5c\u529b"
],
"selected": {},
"show": true,
"padding": 5,
"itemGap": 10,
"itemWidth": 25,
"itemHeight": 14,
"backgroundColor": "transparent",
"borderColor": "#ccc",
"borderWidth": 1,
"borderRadius": 0,
"pageButtonItemGap": 5,
"pageButtonPosition": "end",
"pageFormatter": "{current}/{total}",
"pageIconColor": "#2f4554",
"pageIconInactiveColor": "#aaa",
"pageIconSize": 15,
"animationDurationUpdate": 800,
"selector": false,
"selectorPosition": "auto",
"selectorItemGap": 7,
"selectorButtonGap": 10,
"right": "30%",
"top": "500px",
"orient": "horizontal"
}
],
"tooltip": {
"show": true,
"trigger": "item",
"triggerOn": "mousemove|click",
"axisPointer": {
"type": "line"
},
"showContent": true,
"alwaysShowContent": false,
"showDelay": 0,
"hideDelay": 100,
"enterable": false,
"confine": false,
"appendToBody": false,
"transitionDuration": 0.4,
"textStyle": {
"fontSize": 14
},
"borderWidth": 0,
"padding": 5,
"order": "seriesAsc"
},
"xAxis": [
{
"show": true,
"scale": false,
"nameLocation": "end",
"nameGap": 15,
"gridIndex": 0,
"axisLabel": {
"show": true,
"rotate": -30,
"margin": 8,
"fontSize": 10
},
"inverse": false,
"offset": 0,
"splitNumber": 5,
"minInterval": 0,
"splitLine": {
"show": true,
"lineStyle": {
"show": true,
"width": 1,
"opacity": 1,
"curveness": 0,
"type": "solid"
}
},
"data": [
"\u5357\u5b81\u5e02",
"\u67f3\u5dde\u5e02",
"\u6842\u6797\u5e02",
"\u9632\u57ce\u6e2f\u5e02",
"\u5317\u6d77\u5e02",
"\u7389\u6797\u5e02",
"\u767e\u8272\u5e02",
"\u68a7\u5dde\u5e02",
"\u94a6\u5dde\u5e02",
"\u5d07\u5de6\u5e02",
"\u6cb3\u6c60\u5e02",
"\u8d3a\u5dde\u5e02",
"\u8d35\u6e2f\u5e02",
"\u6765\u5bbe\u5e02"
]
},
{
"show": true,
"scale": false,
"nameLocation": "end",
"nameGap": 15,
"gridIndex": 1,
"axisLabel": {
"show": true,
"rotate": -30,
"margin": 8,
"fontSize": 10
},
"inverse": false,
"offset": 0,
"splitNumber": 5,
"minInterval": 0,
"splitLine": {
"show": true,
"lineStyle": {
"show": true,
"width": 1,
"opacity": 1,
"curveness": 0,
"type": "solid"
}
},
"data": [
"\u67f3\u5dde\u5e02",
"\u5357\u5b81\u5e02",
"\u6842\u6797\u5e02",
"\u9632\u57ce\u6e2f\u5e02",
"\u767e\u8272\u5e02",
"\u5317\u6d77\u5e02",
"\u7389\u6797\u5e02",
"\u94a6\u5dde\u5e02",
"\u68a7\u5dde\u5e02",
"\u6cb3\u6c60\u5e02",
"\u5d07\u5de6\u5e02",
"\u8d35\u6e2f\u5e02",
"\u8d3a\u5dde\u5e02",
"\u6765\u5bbe\u5e02"
]
},
{
"show": true,
"scale": false,
"nameLocation": "end",
"nameGap": 15,
"gridIndex": 2,
"axisLabel": {
"show": true,
"rotate": -30,
"margin": 8,
"fontSize": 10
},
"inverse": false,
"offset": 0,
"splitNumber": 5,
"minInterval": 0,
"splitLine": {
"show": true,
"lineStyle": {
"show": true,
"width": 1,
"opacity": 1,
"curveness": 0,
"type": "solid"
}
},
"data": [
"\u5357\u5b81\u5e02",
"\u67f3\u5dde\u5e02",
"\u6842\u6797\u5e02",
"\u9632\u57ce\u6e2f\u5e02",
"\u767e\u8272\u5e02",
"\u7389\u6797\u5e02",
"\u94a6\u5dde\u5e02",
"\u5317\u6d77\u5e02",
"\u68a7\u5dde\u5e02",
"\u5d07\u5de6\u5e02",
"\u8d35\u6e2f\u5e02",
"\u8d3a\u5dde\u5e02",
"\u6cb3\u6c60\u5e02",
"\u6765\u5bbe\u5e02"
]
}
],
"yAxis": [
{
"show": true,
"scale": false,
"nameLocation": "end",
"nameGap": 15,
"gridIndex": 0,
"inverse": false,
"offset": 0,
"splitNumber": 5,
"minInterval": 0,
"splitLine": {
"show": true,
"lineStyle": {
"show": true,
"width": 1,
"opacity": 1,
"curveness": 0,
"type": "solid"
}
}
},
{
"show": true,
"scale": false,
"nameLocation": "end",
"nameGap": 15,
"gridIndex": 1,
"inverse": false,
"offset": 0,
"splitNumber": 5,
"minInterval": 0,
"splitLine": {
"show": true,
"lineStyle": {
"show": true,
"width": 1,
"opacity": 1,
"curveness": 0,
"type": "solid"
}
}
},
{
"show": true,
"scale": false,
"nameLocation": "end",
"nameGap": 15,
"gridIndex": 2,
"inverse": false,
"offset": 0,
"splitNumber": 5,
"minInterval": 0,
"splitLine": {
"show": true,
"lineStyle": {
"show": true,
"width": 1,
"opacity": 1,
"curveness": 0,
"type": "solid"
}
}
}
],
"title": [
{
"show": true,
"text": "2018\u5e74\u5e7f\u897f\u5404\u5730\u5e02\u521b\u65b0\u80fd\u529b\u5206\u6790\u56fe",
"target": "blank",
"subtarget": "blank",
"left": "5%",
"padding": 5,
"itemGap": 10,
"textAlign": "auto",
"textVerticalAlign": "auto",
"triggerEvent": false
},
{
"show": true,
"text": "2018\u5e74\u5e7f\u897f\u5404\u5730\u5e02\u5730\u57df\u7ecf\u6d4e\u6d3b\u529b\u5206\u6790\u56fe",
"target": "blank",
"subtarget": "blank",
"left": "54%",
"padding": 5,
"itemGap": 10,
"textAlign": "auto",
"textVerticalAlign": "auto",
"triggerEvent": false
},
{
"show": true,
"text": "2018\u5e74\u5e7f\u897f\u5404\u5730\u5e02\u6295\u8d44\u6f5c\u529b\u5206\u6790\u56fe",
"target": "blank",
"subtarget": "blank",
"left": "30%",
"top": "500px",
"padding": 5,
"itemGap": 10,
"textAlign": "auto",
"textVerticalAlign": "auto",
"triggerEvent": false
}
],
"grid": [
{
"show": false,
"zlevel": 0,
"z": 2,
"left": "5%",
"top": "50px",
"right": "55%",
"bottom": "550px",
"containLabel": false,
"backgroundColor": "transparent",
"borderColor": "#ccc",
"borderWidth": 1,
"shadowOffsetX": 0,
"shadowOffsetY": 0
},
{
"show": false,
"zlevel": 0,
"z": 2,
"left": "55%",
"top": "50px",
"right": "5%",
"bottom": "550px",
"containLabel": false,
"backgroundColor": "transparent",
"borderColor": "#ccc",
"borderWidth": 1,
"shadowOffsetX": 0,
"shadowOffsetY": 0
},
{
"show": false,
"zlevel": 0,
"z": 2,
"left": "30%",
"top": "550px",
"right": "30%",
"bottom": "50px",
"containLabel": false,
"backgroundColor": "transparent",
"borderColor": "#ccc",
"borderWidth": 1,
"shadowOffsetX": 0,
"shadowOffsetY": 0
}
]
};
chart_76e98bf0e56d4ee99d70eefd2c0cce7c.setOption(option_76e98bf0e56d4ee99d70eefd2c0cce7c);
window.addEventListener('resize', function(){
chart_76e98bf0e56d4ee99d70eefd2c0cce7c.resize();
})
</script>
</body>
</html>

@ -0,0 +1,268 @@
import happybase
from pyspark.sql import SparkSession, Row
import os
from pyspark.sql import SparkSession
from pyspark.sql import functions as F
from pyspark.sql.functions import when
from pyecharts import options as opts
from pyecharts.charts import Map, Scatter, Page
# 指定python环境
os.environ['PYSPARK_PYTHON'] = 'D:\python\python3.11.4\python.exe'
os.environ['JAVA_HOME'] = "D:\jdk\jdk-17.0.8" # 记得把地址改成自己的
def xja_code01():
# 创建Spark会话
spark = SparkSession.builder.appName("HBaseDataLoading").master('local').getOrCreate()
# 连接到HBase
connection = happybase.Connection('192.168.23.128')
# 获取表
table = connection.table('bigdata')
# 定义列名
columns = ['info:地址', 'info:营业收入', 'info:净利润']
# 查询数据
data = []
for key, row in table.scan(columns=[col.encode('utf-8') for col in columns]):
row_data = {
'序号': key.decode(),
'地址': row['info:地址'.encode('utf-8')].decode(),
'净利润': row['info:净利润'.encode('utf-8')].decode(),
'营业收入': row['info:营业收入'.encode('utf-8')].decode()
}
data.append(row_data)
# 关闭连接
connection.close()
# 将数据转换为Spark DataFrame
df = spark.createDataFrame([Row(**{k: str(v) for k, v in i.items()}) for i in data])
# 需要的列名
df = df.select('地址', '营业收入', '净利润')
df = df.filter((df['地址'].isNotNull()) & (df['地址'] != 'qingxiubgs2014@sina.com'))
# 广西的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_grouped = df.groupBy('地址').agg(
F.count('地址').alias('数量'),
F.round(F.sum('净利润'), 2).alias('总净利润'),
F.round(F.sum('营业收入'), 2).alias('总营业收入')
)
# 假设 df_grouped 是包含聚合数据的 DataFrame
data = df_grouped.toPandas()
# 创建 '总净利润' 的地图图表
map_net_profit = (
Map()
.add("总净利润(千元)", list(zip(data['地址'], data['总净利润'])), "广西")
.set_global_opts(
title_opts=opts.TitleOpts(title="2018年广西企业总净利润对比图"),
visualmap_opts=opts.VisualMapOpts(max_=max(data['总净利润'])),
)
)
# 创建 '总营业收入' 的地图图表
map_total_revenue = (
Map()
.add("总营业收入(千元)", list(zip(data['地址'], data['总营业收入'])), "广西")
.set_global_opts(
title_opts=opts.TitleOpts(title="2018年广西企业总营业收入对比图"),
visualmap_opts=opts.VisualMapOpts(max_=max(data['总营业收入'])),
)
)
# 创建 '数量' 的地图图表
map_count = (
Map()
.add("数量", list(zip(data['地址'], data['数量'])), "广西")
.set_global_opts(
title_opts=opts.TitleOpts(title="2018年广西企业数量分布图"),
visualmap_opts=opts.VisualMapOpts(max_=max(data['数量'])),
)
)
# 创建页面对象
page = Page(layout=Page.SimplePageLayout)
# 添加 '总净利润'、'总营业收入' 和 '数量' 的地图图表到页面
page.add(map_net_profit)
page.add(map_total_revenue)
page.add(map_count)
return page

@ -0,0 +1,242 @@
import happybase
from pyecharts.charts import Line
from pyspark.sql import SparkSession, Row
from pyspark.sql import functions as F
import os
from pyecharts import options as opts
# 指定python环境
os.environ['PYSPARK_PYTHON'] = 'D:\python\python3.11.4\python.exe'
os.environ['JAVA_HOME'] = "D:\jdk\jdk-17.0.8" # 记得把地址改成自己的
def xja_code02():
# 创建Spark会话
spark = SparkSession.builder.appName("HBaseDataLoading").master('local').getOrCreate()
# 连接到HBase
connection = happybase.Connection('192.168.23.128')
# 获取表
table = connection.table('bigdata')
# 需要的列族:列限定符
columns = ['info:地址', 'info:其中:研发、试验检验费', 'info:其中:技术(研究)开发费', 'info:其中:支付科研人员的工资及福利费', 'info:营业成本']
# 查询数据
data = []
for key, row in table.scan(columns=[col.encode('utf-8') for col in columns]):
row_data = {
'序号': key.decode(),
'地址': row['info:地址'.encode('utf-8')].decode(),
'其中:研发、试验检验费': row['info:其中:研发、试验检验费'.encode('utf-8')].decode(),
'其中:技术(研究)开发费': row['info:其中:技术(研究)开发费'.encode('utf-8')].decode(),
'其中:支付科研人员的工资及福利费': row['info:其中:支付科研人员的工资及福利费'.encode('utf-8')].decode(),
'营业成本': row['info:营业成本'.encode('utf-8')].decode()
}
data.append(row_data)
# 关闭连接
connection.close()
# 将数据转换为Spark DataFrame
df = spark.createDataFrame([Row(**{k: str(v) for k, v in i.items()}) for i in data])
# 广西的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))
pandas_df = df_grouped.toPandas()
pandas_df.index = range(1, len(pandas_df) + 1)
line = Line()
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轴标签间隔
)
return line

@ -0,0 +1,238 @@
import happybase
from pyecharts.charts import Bar
from pyspark.sql import SparkSession, Row
from pyspark.sql import functions as F
from pyspark.sql.functions import when
import os
from pyecharts import options as opts
# 指定python环境
os.environ['PYSPARK_PYTHON'] = 'D:\python\python3.11.4\python.exe'
os.environ['JAVA_HOME'] = "D:\jdk\jdk-17.0.8" # 记得把地址改成自己的
def xja_code03():
# 创建Spark会话
spark = SparkSession.builder.appName("HBaseDataLoading").master('local').getOrCreate()
# 连接到HBase
connection = happybase.Connection('192.168.23.128')
# 获取表
table = connection.table('bigdata')
# 需要的列族:列限定符
columns = ['info:地址', 'info:其中:研发、试验检验费', 'info:其中:技术(研究)开发费', 'info:其中:支付科研人员的工资及福利费']
# 查询数据
data = []
for key, row in table.scan(columns=[col.encode('utf-8') for col in columns]):
row_data = {
'序号': key.decode(),
'地址': row['info:地址'.encode('utf-8')].decode(),
'其中:研发、试验检验费': row['info:其中:研发、试验检验费'.encode('utf-8')].decode(),
'其中:技术(研究)开发费': row['info:其中:技术(研究)开发费'.encode('utf-8')].decode(),
'其中:支付科研人员的工资及福利费': row['info:其中:支付科研人员的工资及福利费'.encode('utf-8')].decode()
}
data.append(row_data)
# 关闭连接
connection.close()
# 将数据转换为Spark DataFrame
df = spark.createDataFrame([Row(**{k: str(v) for k, v in i.items()}) for i in data])
# 广西的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('研发总投入额')
pandas_df = df_grouped_sorted.toPandas()
pandas_df.index = range(1, len(pandas_df) + 1)
bar = Bar()
bar.add_xaxis(pandas_df['地址'].tolist())
bar.add_yaxis("研发总投入额(千元)", pandas_df['研发总投入额'].tolist())
bar.set_global_opts(
xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(interval=0)), # 调整x轴标签间隔
)
return bar
Loading…
Cancel
Save