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

简介: 《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

相关文章
|
19天前
|
Python
Python字符串格式化利器:f-strings入门指南
Python字符串格式化利器:f-strings入门指南
128 80
|
5月前
|
程序员 UED Python
Python入门:3.Python的输入和输出格式化
在 Python 编程中,输入与输出是程序与用户交互的核心部分。而输出格式化更是对程序表达能力的极大增强,可以让结果以清晰、美观且易读的方式呈现给用户。本文将深入探讨 Python 的输入与输出操作,特别是如何使用格式化方法来提升代码质量和可读性。
Python入门:3.Python的输入和输出格式化
|
5月前
|
机器学习/深度学习 人工智能 算法框架/工具
Python入门:1.Python介绍
Python是一种功能强大、易于学习和运行的解释型高级语言。由**Guido van Rossum**于1991年创建,Python以其简洁、易读和十分工程化的设计而带来了庞大的用户群体和丰富的应用场景。这个语言在全球范围内都被认为是**创新和效率的重要工具**。
Python入门:1.Python介绍
|
26天前
|
NoSQL MongoDB 开发者
Python与MongoDB的亲密接触:从入门到实战的代码指南
本文详细介绍了Python与MongoDB结合使用的实战技巧,涵盖环境搭建、连接管理、CRUD操作、高级查询、索引优化、事务处理及性能调优等内容。通过15个代码片段,从基础到进阶逐步解析,帮助开发者掌握这对黄金组合的核心技能。内容包括文档结构设计、批量操作优化、聚合管道应用等实用场景,适合希望高效处理非结构化数据的开发者学习参考。
59 0
|
2月前
|
数据管理 开发者 Python
揭秘Python的__init__.py:从入门到精通的包管理艺术
__init__.py是Python包管理中的核心文件,既是包的身份标识,也是模块化设计的关键。本文从其历史演进、核心功能(如初始化、模块曝光控制和延迟加载)、高级应用场景(如兼容性适配、类型提示和插件架构)到最佳实践与常见陷阱,全面解析了__init__.py的作用与使用技巧。通过合理设计,开发者可构建优雅高效的包结构,助力Python代码质量提升。
169 10
|
3月前
|
数据采集 数据可视化 大数据
Python入门修炼:开启你在大数据世界的第一个脚本
Python入门修炼:开启你在大数据世界的第一个脚本
108 6
|
3月前
|
数据可视化 流计算 Python
Python创意爱心代码大全:从入门到高级的7种实现方式
本文分享了7种用Python实现爱心效果的方法,从简单的字符画到复杂的3D动画,涵盖多种技术和库。内容包括:基础字符爱心(一行代码实现)、Turtle动态绘图、Matplotlib数学函数绘图、3D旋转爱心、Pygame跳动动画、ASCII艺术终端显示以及Tkinter交互式GUI应用。每种方法各具特色,适合不同技术水平的读者学习和实践,是表达创意与心意的绝佳工具。
1261 0
|
4月前
|
Web App开发 移动开发 前端开发
React音频播放器样式自定义全解析:从入门到避坑指南
在React中使用HTML5原生<audio>标签时,开发者常面临视觉一致性缺失、样式定制局限和交互体验割裂等问题。通过隐藏原生控件并构建自定义UI层,可以实现完全可控的播放器视觉风格,避免状态不同步等典型问题。结合事件监听、进度条拖拽、浏览器兼容性处理及性能优化技巧,可构建高性能、可维护的音频组件,满足跨平台需求。建议优先使用成熟音频库(如react-player),仅在深度定制需求时采用原生方案。
148 12
|
4月前
|
Java 关系型数据库 数据库连接
Javaweb之Mybatis入门程序的详细解析
本文详细介绍了一个MyBatis入门程序的创建过程,从环境准备、Maven项目创建、MyBatis配置、实体类和Mapper接口的定义,到工具类和测试类的编写。通过这个示例,读者可以了解MyBatis的基本使用方法,并在实际项目中应用这些知识。
122 11
|
5月前
|
开发者 Python
Python入门:8.Python中的函数
### 引言 在编写程序时,函数是一种强大的工具。它们可以将代码逻辑模块化,减少重复代码的编写,并提高程序的可读性和可维护性。无论是初学者还是资深开发者,深入理解函数的使用和设计都是编写高质量代码的基础。本文将从基础概念开始,逐步讲解 Python 中的函数及其高级特性。
Python入门:8.Python中的函数

推荐镜像

更多