一、 原始数据:
二、 地域维度标准化:
地域属性在科技成果分析中作为一个重要维度,其标准取值非常必要,目前我国采用的标准行政区划代码由两部分组成,一部分为行政区划编码,六位数字组成,前两位表示省编码,中间两位代表市编码,后两位表示所属市的区或县编码。一部分为行政区划名称。两部分在数据分析中经常用到,行政区划编码的树形结构在实现数据统计时的上钻和下卷功能尤其方便。
行政区划是国家标准,中间有调整,需要根据年度确定该年度执行的国家标准。
要求在上次结果表的基础之上完成地域取值标准化。
(1) 增加行政区划编码列,具体取值与国家发布的行政区划标准相对应,例如130102表示河北省石家庄市长安区;
(2) 规范地域取值,统一命名规则为:河北省石家庄市长安区。没有地域属性要根据单位名称或单位地址确定地域数值,尽量规范到区县一级,如果不行至少到市一级。参考方法:可以通过百度地图或高德地图接口查询或者通过网络爬取方式补充完整地域属性信息。
三、 数据初级分析-分类
1.1京津冀科技成果表中字段比较完整其中关键字、应用行业字段、行业代码在科技成果数据分析中经常使用。1.2河北科技成果2015年第1-2-3期(技术)表中有行业字段,缺少关键字、行业代码。1.3天津科技成果(技术)表中上述三个字段就没有,表中的所属技术领域字段与行业相似,但并不是国家标准规范。
(1)补充关键字字段,从项目简介中提取关键字,补充完成1.2、1.3表中的关键字字段。
(2)补充应用行业字段和行业代码。行业为国家标准《国民经济行业分类与代码》,中间有调整,需要根据年度确定该年度执行的国家标准。
根据1.1和1.2表中行业分类,根据项目名称、关键字、项目简介字段,采用机器学习相关算法,补充1.3表中的行业分类和行业代码。
import java.sql.*;
public class thedataqingxi {
public static void main(String[] args) {
// 数据库连接信息
String url = "jdbc:mysql://localhost:3306/2024.2.28test";
String username = "root";
String password = "123456";
try {
// 连接数据库
Connection connection = DriverManager.getConnection(url, username, password);
// 执行数据清洗操作
cleanData(connection);
// 关闭数据库连接
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
private static void cleanData(Connection connection) throws SQLException {
// SQL查询语句,查找重复记录并保留一条
String findDuplicatesSQL = "SELECT MIN(ID) as minID, name, danwei " +
"FROM huizongbiao " +
"GROUP BY name, danwei " +
"HAVING COUNT(*) > 1";
// SQL删除语句,删除除最小ID外的重复记录
String deleteDuplicatesSQL = "DELETE FROM huizongbiao WHERE ID <> ? AND name = ? AND danwei = ?";
// 执行查询
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(findDuplicatesSQL);
// 遍历查询结果
while (resultSet.next()) {
int minID = resultSet.getInt("minID");
String name = resultSet.getString("name");
String danwei = resultSet.getString("danwei");
// 执行删除操作
PreparedStatement preparedStatement = connection.prepareStatement(deleteDuplicatesSQL);
preparedStatement.setInt(1, minID);
preparedStatement.setString(2, name);
preparedStatement.setString(3, danwei);
preparedStatement.executeUpdate();
preparedStatement.close();
}
// 关闭Statement和ResultSet
statement.close();
resultSet.close();
}
}
数据可视化展示
import pandas as pd
import matplotlib.pyplot as plt
# 设置中文显示
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 读取CSV文件
df = pd.read_csv('huizongbiao.csv')
# 按地区分组并计算各地区的应用行业占比
hebei_data = df[df['shengshiqu'] == '河北']
beijing_data = df[df['shengshiqu'] == '北京']
tianjin_data = df[df['shengshiqu'] == '天津']
def plot_line(data, title):
# 计算应用行业占比
industry_counts = data['yingyonghangye'].value_counts()
# 只保留前五,其余用"其他"代指
top_industries = industry_counts.head(5)
other_count = industry_counts[5:].sum()
top_industries['其他'] = other_count
total_count = len(data)
industry_percentages = top_industries / total_count * 100
# 绘制折线图
plt.figure(figsize=(10, 6))
plt.plot(industry_percentages.index, industry_percentages.values, marker='o')
plt.title(f'{title} - 行业占比')
plt.xlabel('应用行业')
plt.ylabel('占比 (%)')
plt.xticks(rotation=45)
plt.grid(True)
plt.show()
# 绘制河北地区的图表
plot_line(hebei_data, '河北')
# 绘制北京地区的图表
plot_line(beijing_data, '北京')
# 绘制天津地区的图表
plot_line(tianjin_data, '天津')
四、 数据可视化展示
(1) 根据地域属性实现数据的可视化展示,可以看到省-市-区县三级数据下钻呈现的项目数量。
(2) 结合行业分类,显示省-市-区县不同的项目类型的数量。
(3) 分析京津冀三个省市科技成果中存在的优势和劣势。
标签:01,String,df,数据,industry,行业,plt,课堂,data From: https://www.cnblogs.com/kk4458/p/18139212