首页 > 其他分享 >大数据同步练习

大数据同步练习

时间:2024-03-03 22:23:20浏览次数:28  
标签:同步 String df 数据 练习 plt 表中 data name

本实验参考3.2每日总结 - 风·华正茂 - 博客园 (cnblogs.com)

石家庄铁道大学2024年春季

  2022 级课堂测试试卷—数据同步练习

课程名称:大数据库技术与应用  任课教师:王建民  考试时间: 120 分钟 

 

一、     数据结构分析:

(1)京津冀三省的2015年度的科技成果数据原始表,为Access数据库,;

 

(2)要求将三省的科技成果数据汇总到同一表中(要求结果表为MySql数据表);

(3)三个原始数据表结构不一致,要求结果表中包括所有的字段,表达意思相同或相似的字段要进行合并,不允许丢失字段(若只有本表独有字段,在结果表中其他两表数据在该字段填入空值)。

二、     数据同步练习:要求采编程实现三个原始表数据同步功能,将三个表的数据同步到一个结果表中。

三、    数据清洗练习:

(1)重复记录清洗,分析结果表中是否存在重复的数据记录,主要是地域和成果名称相同即判定为重复记录,保留一条记录,并补充其他重复记录中独有的数据字段内容,再删除其余记录。

(2)在结果表中追加年份和地域两个标准维度字段,如果原始表中存在该字段则直接转化成维度字段,若不存在则根据单位名称确定地域字段内容,天津科技成果表中不存在年度字段,则直接将年度维度字段确定为2015年。

四、   数据分析:

根据提供的已知字段名称,自动将科技成果分类,并且分析京津冀三地的科技优势。

五、   将最终的MySQL数据表导入,放入源程序,将文件夹命名为为班级学号姓名提交。

 

数据清洗

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, '天津')

 

 

 

标签:同步,String,df,数据,练习,plt,表中,data,name
From: https://www.cnblogs.com/bu-dao-weng/p/18050879

相关文章

  • python接口自动化系列(04):读取数据文件并注入到测试方法
     本系列汇总,请查看这里:https://www.cnblogs.com/uncleyong/p/18033074实现目标把用例yaml文件中数据读取出来,依次把每条用例数据传给测试方法。 安装模块安装操作yaml的模块pyyamlpipinstallpyyaml 测试数据文件放data目录case.yaml 内容:----epic:全栈测......
  • python接口自动化系列(02):yaml测试数据文件设计
     本系列汇总,请查看这里:https://www.cnblogs.com/uncleyong/p/18033074实现目标对测试数据进行设计,数据设计决定了后续读取数据的代码该如何实现。 关于被测试接口配套练习环境(含相关接口):https://www.cnblogs.com/uncleyong/p/17165143.html 常用数据用例数据频繁使用......
  • 牛客练习赛122
    牛客练习赛122黑白配代码:#include<bits/stdc++.h>usingnamespacestd;usingll=longlong;usingpii=pair<ll,ll>;typedefdoubledb;#definefifirst#definesesecondusingi128=__int128_t;usingpiii=pair<ll,pair<ll,ll>>;cons......
  • MySQL之基本数据类型
    数据类型:类型类型举例整数类型TINYINT、SMALLINT、MEDIUMINT、INT(或INTEGER)、BIGINT浮点类型FLOAT、DOUBLE定点数类型DECIMAL位类型BIT日期时间类型YEAR、TIME、DATE、DATETIME、TIMESTAMP文本字符串类型CHAR、VARCHAR、TINYTEXT、TEXT、MEDIUMT......
  • 断电引起文件scn异常数据库恢复---惜分飞
    联系:手机/微信(+8617813235971)QQ(107644445)标题:断电引起文件scn异常数据库恢复作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]由于异常断电,数据库最初启动报错FriMar0108:41:172024ALTERDATABASE  MOUNTSucces......
  • 数据库性能调优
    一、数据库设计优化数据库设计是影响数据库性能的重要因素之一。在数据库设计时,应该尽量避免冗余数据、过度规范化和设计过于复杂的数据模型。以下是几个数据库设计优化的建议:1、避免冗余数据对于数据中重复的信息,应该将其拆分到单独的表中,以便提高数据的一致性和更新的效率。......
  • Redis的常用数据类型与操作
    Redis简介Redis是一个基于内存的key-value结构数据库(内存存储)(键值对)Mysql是将数据,是通过数据文件的方式存放在磁盘上(磁盘存储)(二维表)Redis特点抢购秒杀,或者新闻热点,大量的用户去访问的数据,就适合存放在Redis中,是对mysql的补充,往往项目中是和mysql共存的状态redis进行cmd命令......
  • 数据结构总纲
    一概述Java集合,也叫作容器,主要是由两大接口派生而来:一个是Collection接口,主要用于存放单一元素;另一个是Map接口,主要用于存放键值对。对于Collection接口,下面又有三个主要的子接口:List、Set和QueueJava集合框架如下图所示: ListArrayList:Object[]数组。Vector:O......
  • 循环高级综合练习
    循环高级综合练习无限循环和跳转控制语句无限循环无限循环:循环一直停不下来。格式:for:for(;;){System.out.println("给女神表白");}while:while(true){System.out.println("女神答应我了");}do...while:do{System.out.println("女神答应我了");}......
  • 常见的数据库语句解析
    创建表的时候,一般都会在结尾写上这些代码:ENGINE=InnoDBAUTO_INCREMENT=70defaultcharset=utf8mb3collate=utf8mb4_bincomment='';我经过学习后简单了解了这些语句的作用:ENGINE=InnoDB:指定了表的存储引擎为InnoDB,InnoDB是MySQL的一种存储引擎,提供了事务处理和外......