《Python编程:从入门到实践》学习记录(16)项目-解析CSV与JSON;matplotlib, pygal绘图

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: 《Python编程:从入门到实践》学习记录(16)项目-解析CSV与JSON;matplotlib, pygal绘图


# 解析CSV天气数据并使用matplotlib将数据绘制成折线图


  • 数据


image.png

  • 解析数据与绘图

import csv
from matplotlib import pyplot as plt
from datetime import datetime
def read_data_from_csv():
    """
    从CSV文件中读取日期/最高温/最低温数据
    :return:
    """
    # file_path = 'data/sitka_weather_07-2014.csv'
    file_path = 'data/sitka_weather_2014.csv'
    # file_path = 'data/death_valley_2014.csv'
    with open(file_path) as csv_file:
        csv_reader = csv.reader(csv_file)
        # enumerate(iterable)可用来获取每个元素的索引
        for index, item in enumerate(next(csv_reader)):
            print(index, item)
        # 日期
        dates = []
        # 用于保存每天的最高气温
        highs = []
        # 最低温
        lows = []
        for row in csv_reader:
            # 将字符串转换为指定格式的datetime
            dates.append(datetime.strptime(row[0], '%Y-%m-%d'))
            # 最最高温数据
            highs.append(int(row[1]))
            # 最低温数据
            lows.append(int(row[3]))
        return [dates, highs, lows]
def draw(data):
    """
    绘图
    :param data: 日期与温度
    :return:
    """
    plt.figure(dpi=128, figsize=(10, 6))
    # 绘制最高温
    plt.plot(data[0], data[1], c='red')
    # 绘制最低温
    plt.plot(data[0], data[2], c='blue')
    # 填充温度之间的区域
    plt.fill_between(data[0], data[1], data[2], facecolor='blue', alpha=0.1)
    plt.show()
draw(read_data_from_csv())


  • 结果:

image.png


日期参数


image.png

image.png


# 解析股价走势json数据并使用pygal绘制折线图

数据


image.png

image.png

  • 代码

import json
import pygal
def read_json_data_from_file(file_path: str):
    """
    读取json文件数据
    :param file_path:
    :return:    解析的字典
    """
    date = "date"
    month = "month"
    week = "week"
    weekday = "weekday"
    close = "close"
    # 打开文件
    with open(file_path) as json_file:
        # 解析为json
        json_data = json.load(json_file)
        # 存储数据集
        dates, months, weeks, weekdays, closes = [], [], [], [], []
        # 遍历json数组
        for json_obj in json_data:
            # 每个json对象都是一个dict,取到json的每个属性值
            dates.append(json_obj[date])
            months.append(json_obj[month])
            weeks.append(json_obj[week])
            weekdays.append(json_obj[weekday])
            closes.append(float(json_obj[close]))
        return {"dates": dates, "months": months, "weeks": weeks, "weekdays": weekdays, "closes": closes}
def draw(data: dict):
    """绘图"""
    line_chart = pygal.Line(x_label_rotation=20, show_minor_x_labels=False)
    line_chart.title = "收盘价折线图"
    line_chart.x_labels = data["dates"]
    # X轴每隔20天显示一次
    N = 20
    line_chart.x_labels_major = data["dates"][::N]
    line_chart.add("收盘价", data["closes"])
    line_chart.render_to_file('收盘价折线图.svg')
json_file_path = "btc/btc_close_2017.json"
draw(read_json_data_from_file(json_file_path))


  • 结果

image.png

相关文章
|
3天前
|
数据采集 JSON API
如何利用Python爬虫淘宝商品详情高级版(item_get_pro)API接口及返回值解析说明
本文介绍了如何利用Python爬虫技术调用淘宝商品详情高级版API接口(item_get_pro),获取商品的详细信息,包括标题、价格、销量等。文章涵盖了环境准备、API权限申请、请求构建和返回值解析等内容,强调了数据获取的合规性和安全性。
|
14天前
|
存储 缓存 Python
Python中的装饰器深度解析与实践
在Python的世界里,装饰器如同一位神秘的魔法师,它拥有改变函数行为的能力。本文将揭开装饰器的神秘面纱,通过直观的代码示例,引导你理解其工作原理,并掌握如何在实际项目中灵活运用这一强大的工具。从基础到进阶,我们将一起探索装饰器的魅力所在。
|
18天前
|
Android开发 开发者 Python
通过标签清理微信好友:Python自动化脚本解析
微信已成为日常生活中的重要社交工具,但随着使用时间增长,好友列表可能变得臃肿。本文介绍了一个基于 Python 的自动化脚本,利用 `uiautomator2` 库,通过模拟用户操作实现根据标签批量清理微信好友的功能。脚本包括环境准备、类定义、方法实现等部分,详细解析了如何通过标签筛选并删除好友,适合需要批量管理微信好友的用户。
24 7
|
20天前
|
测试技术 开发者 Python
使用Python解析和分析源代码
本文介绍了如何使用Python的`ast`模块解析和分析Python源代码,包括安装准备、解析源代码、分析抽象语法树(AST)等步骤,展示了通过自定义`NodeVisitor`类遍历AST并提取信息的方法,为代码质量提升和自动化工具开发提供基础。
34 8
|
20天前
|
XML 数据采集 数据格式
Python 爬虫必备杀器,xpath 解析 HTML
【11月更文挑战第17天】XPath 是一种用于在 XML 和 HTML 文档中定位节点的语言,通过路径表达式选取节点或节点集。它不仅适用于 XML,也广泛应用于 HTML 解析。基本语法包括标签名、属性、层级关系等的选择,如 `//p` 选择所有段落标签,`//a[@href='example.com']` 选择特定链接。在 Python 中,常用 lxml 库结合 XPath 进行网页数据抓取,支持高效解析与复杂信息提取。高级技巧涵盖轴的使用和函数应用,如 `contains()` 用于模糊匹配。
|
27天前
|
数据可视化 图形学 Python
在圆的外面画一个正方形:Python实现与技术解析
本文介绍了如何使用Python的`matplotlib`库绘制一个圆,并在其外部绘制一个正方形。通过计算正方形的边长和顶点坐标,实现了圆和正方形的精确对齐。代码示例详细展示了绘制过程,适合初学者学习和实践。
39 9
|
1天前
|
数据挖掘 vr&ar C++
让UE自动运行Python脚本:实现与实例解析
本文介绍如何配置Unreal Engine(UE)以自动运行Python脚本,提高开发效率。通过安装Python、配置UE环境及使用第三方插件,实现Python与UE的集成。结合蓝图和C++示例,展示自动化任务处理、关卡生成及数据分析等应用场景。
16 5
|
28天前
|
存储 缓存 开发者
Python编程中的装饰器深度解析
本文将深入探讨Python语言的装饰器概念,通过实际代码示例展示如何创建和应用装饰器,并分析其背后的原理和作用。我们将从基础定义出发,逐步引导读者理解装饰器的高级用法,包括带参数的装饰器、多层装饰器以及装饰器与类方法的结合使用。文章旨在帮助初学者掌握这一强大工具,同时为有经验的开发者提供更深层次的理解和应用。
32 7
|
29天前
|
数据采集 JSON 数据格式
深入解析:使用Python爬取Bilibili视频
本文介绍了如何使用Python编写脚本自动化下载Bilibili视频。通过requests等库获取视频和音频URL,使用ffmpeg合并音视频文件,最终实现高效下载。注意遵守网站爬虫政策和法律法规。
203 4
|
28天前
|
机器学习/深度学习 数据采集 数据挖掘
Python编程语言的魅力:从入门到进阶的全方位解析
Python编程语言的魅力:从入门到进阶的全方位解析

推荐镜像

更多