当前位置: 首页 > news >正文

国家统计局数据读取——数据读取——清洗数据06

        我们在第一篇就讲过国家统计局数据的爬取了,接下来就是清洗数据和数据分析。

国家统计局数据分析01——机器学习-CSDN博客

一、导入需要的库

import json                    #用于处理JSON格式的数据,通常用于读取和写入JSON文件
import pandas as pd            #Pandas是Python中最主要的数据处理和分析库,提供DataFrame数据结构,类似于Excel表格,用于处理结构化数据
import numpy as np             #NumPy是Python科学计算的基础包,提供高性能的多维数组对象和数学函数
import matplotlib.pyplot as plt#Matplotlib是Python的主要绘图库,pyplot模块提供类似MATLAB的绘图接口
import matplotlib.font_manager as fm#Matplotlib的字体管理模块
from datetime import datetime#从datetime模块导入datetime类,用于处理日期和时间数据
import matplotlib           #导入完整的matplotlib库,用于更高级的图表配置# 设置中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号

二、读取数据

# 步骤1: 读取JSON数据文件
def read_json_data(file_path):"""读取JSON格式的数据文件参数:file_path (str): JSON文件的路径返回:dict/list: 解析后的JSON数据,如果读取失败则返回None功能说明:这个函数使用Python的json模块来读取和解析JSON文件。它采用了异常处理机制来确保在文件不存在、权限不足或JSON格式错误时程序不会崩溃。使用UTF-8编码确保能正确处理中文字符。"""try:# 使用with语句打开文件,确保文件在使用后正确关闭# 'r'表示读取模式,encoding='UTF-8'确保正确处理中文字符with open(file_path, 'r', encoding='UTF-8') as file:# 使用json.load()方法解析JSON文件内容data = json.load(file)# 打印成功消息print("数据读取成功!")# 返回解析后的数据return dataexcept Exception as e:# 捕获并处理所有可能的异常# 使用f-string格式化错误消息,包含具体的异常信息print(f"读取数据时出错: {e}")# 返回None表示读取失败return None

1. 异常处理 (Exception Handling)

try:# 可能出错的代码
except Exception as e:# 错误处理
  • 作用:防止程序因意外错误而崩溃
  • 最佳实践:使用具体的异常类型(如FileNotFoundErrorJSONDecodeError)而不是通用的Exception

2. 上下文管理器 (Context Manager)

with open(file_path, 'r', encoding='UTF-8') as file:# 文件操作
  • 作用:自动管理资源(文件)的打开和关闭
  • 优势:即使发生异常,文件也会正确关闭,避免资源泄漏

3. 文件编码处理

encoding='UTF-8'
  • 重要性:确保正确处理中文字符和其他非ASCII字符
  • 避免问题:防止出现乱码或编码错误

4. JSON解析

json.load(file)
  • 功能:将JSON字符串转换为Python对象(dict/list)
  • 相关方法json.loads()用于解析字符串,json.load()用于解析文件

5. 文档字符串 (Docstring)

"""
参数:
file_path (str): JSON文件的路径返回:
dict/list: 解析后的JSON数据
"""
  • 作用:提供函数说明、参数说明、返回值说明
  • 标准格式:遵循PEP 257规范

6. 类型提示 (Type Hints)

def read_json_data(file_path: str) -> Union[dict, list, None]:
  • 作用:明确函数参数和返回值的类型
  • 优势:提高代码可读性,便于静态类型检查

7. 错误信息处理

print(f"读取数据时出错: {e}")
  • f-string:Python 3.6+的字符串格式化方法
  • 重要性:提供详细的错误信息,便于调试

8. 返回值设计

return None  # 表示读取失败
  • 设计思想:使用None作为失败时的返回值
  • 替代方案:可以抛出异常让调用者处理

9. 函数单一职责原则

  • 该函数只负责读取JSON文件,不包含其他逻辑
  • 符合"一个函数只做一件事"的原则

三、数据清洗

# 步骤2: 提取并清洗数据
def extract_and_clean_data(json_data):"""从JSON数据中提取并清洗价格数据"""# 获取第一个表格(价格数据)price_table = json_data['tables'][0]['data']# 创建DataFramedf = pd.DataFrame(price_table[1:], columns=price_table[0])# 移除分类标题行和注释行df = df[~df['产品名称'].str.contains('一、|二、|三、|四、|五、|六、|七、|八、|九、|注:', na=False)]# 重置索引df = df.reset_index(drop=True)# 
http://www.dtcms.com/a/388823.html

相关文章:

  • 基于 scratch 构建简单镜像
  • Web安全的暗角:10大易忽略逻辑漏洞解析!
  • 矩阵奇异值分解算法(SVD)详解
  • 【FreeRTOS】 二值信号量与互斥量(CMSIS-RTOS v2 版本)
  • Qt C++ :Qt全局定义<QtGlobal>
  • 【STL源码剖析】从源码看 list:从迭代器到算法
  • MySQL 专题(三):事务与锁机制深度解析
  • 使用BLIP训练自己的数据集(图文描述)
  • Geoserver修行记--在geoserver中如何复制某个图层组内容
  • DBG数据库透明加密网关:SQLServer应用免改造的安全防护方案,不限制开发语言的加密网关
  • 不同上位开发语言、PLC下位平台、工业协议与操作系统平台下的数据类型通用性与差异性详解
  • 【入门篇|第二篇】从零实现选择、冒泡、插入排序(含对数器)
  • javaweb Servlet基本介绍及开发流程
  • MySQL MHA高可用
  • 整体设计 逻辑拆解之2 实现骨架:一元谓词+ CNN的谓词系统
  • SpEL(Spring Expression Language)学习笔记
  • Java 字节码进阶3:面向对象多态在字节码层面的原理?
  • Tensor :核心概念、常用函数与避坑指南
  • 机器学习实战·第四章 训练模型(1)
  • 一次因表单默认提交导致的白屏排查记录
  • Linux:io_uring
  • 《第九课——C语言判断:从Java的“文明裁决“到C的“原始决斗“——if/else的生死擂台与switch的轮盘赌局》
  • 学习日报|Spring 全局异常与自定义异常拦截器执行顺序问题及解决
  • Spring Boot 参数处理
  • Debian系统基本介绍:新手入门指南
  • Spring Security 框架
  • Qt QPercentBarSeries详解
  • RTT操作系统(3)
  • DNS服务管理
  • IDA Pro配置与笔记