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

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 《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

相关文章
|
1月前
|
算法 前端开发 数据处理
小白学python-深入解析一位字符判定算法
小白学python-深入解析一位字符判定算法
47 0
|
1月前
|
自然语言处理 数据处理 Python
python操作和解析ppt文件 | python小知识
本文将带你从零开始,了解PPT解析的工具、工作原理以及常用的基本操作,并提供具体的代码示例和必要的说明【10月更文挑战第4天】
304 60
|
5天前
|
移动开发 数据可视化 数据挖掘
利用Python实现数据可视化:以Matplotlib和Seaborn为例
【10月更文挑战第37天】本文旨在引导读者理解并掌握使用Python进行数据可视化的基本方法。通过深入浅出的介绍,我们将探索如何使用两个流行的库——Matplotlib和Seaborn,来创建引人入胜的图表。文章将通过具体示例展示如何从简单的图表开始,逐步过渡到更复杂的可视化技术,帮助初学者构建起强大的数据呈现能力。
|
9天前
|
算法 Python
Python 大神修炼手册:图的深度优先&广度优先遍历,深入骨髓的解析
在 Python 编程中,掌握图的深度优先遍历(DFS)和广度优先遍历(BFS)是进阶的关键。这两种算法不仅理论重要,还能解决实际问题。本文介绍了图的基本概念、邻接表表示方法,并给出了 DFS 和 BFS 的 Python 实现代码示例,帮助读者深入理解并应用这些算法。
20 2
|
13天前
|
数据可视化 JavaScript 前端开发
Python中交互式Matplotlib图表
【10月更文挑战第20天】Matplotlib 是 Python 中最常用的绘图库之一,但默认生成的图表是静态的。通过结合 mpld3 库,可以轻松创建交互式图表,提升数据可视化效果。本文介绍了如何使用 mpld3 在 Python 中创建交互式散点图、折线图和直方图,并提供了详细的代码示例和安装方法。通过添加插件,可以实现缩放、平移和鼠标悬停显示数据标签等交互功能。希望本文能帮助读者掌握这一强大工具。
39 5
|
17天前
|
数据采集 数据可视化 数据处理
如何使用Python实现一个交易策略。主要步骤包括:导入所需库(如`pandas`、`numpy`、`matplotlib`)
本文介绍了如何使用Python实现一个交易策略。主要步骤包括:导入所需库(如`pandas`、`numpy`、`matplotlib`),加载历史数据,计算均线和其他技术指标,实现交易逻辑,记录和可视化交易结果。示例代码展示了如何根据均线交叉和价格条件进行开仓、止损和止盈操作。实际应用时需注意数据质量、交易成本和风险管理。
37 5
|
18天前
|
测试技术 开发者 Python
深入浅出:Python中的装饰器解析与应用###
【10月更文挑战第22天】 本文将带你走进Python装饰器的世界,揭示其背后的魔法。我们将一起探索装饰器的定义、工作原理、常见用法以及如何自定义装饰器,让你的代码更加简洁高效。无论你是Python新手还是有一定经验的开发者,相信这篇文章都能为你带来新的启发和收获。 ###
12 1
|
18天前
|
设计模式 测试技术 开发者
Python中的装饰器深度解析
【10月更文挑战第24天】在Python的世界中,装饰器是那些能够为函数或类“添彩”的魔法工具。本文将带你深入理解装饰器的概念、工作原理以及如何自定义装饰器,让你的代码更加优雅和高效。
|
28天前
|
XML 前端开发 数据格式
Beautiful Soup 解析html | python小知识
在数据驱动的时代,网页数据是非常宝贵的资源。很多时候我们需要从网页上提取数据,进行分析和处理。Beautiful Soup 是一个非常流行的 Python 库,可以帮助我们轻松地解析和提取网页中的数据。本文将详细介绍 Beautiful Soup 的基础知识和常用操作,帮助初学者快速入门和精通这一强大的工具。【10月更文挑战第11天】
56 2
|
28天前
|
数据安全/隐私保护 流计算 开发者
python知识点100篇系列(18)-解析m3u8文件的下载视频
【10月更文挑战第6天】m3u8是苹果公司推出的一种视频播放标准,采用UTF-8编码,主要用于记录视频的网络地址。HLS(Http Live Streaming)是苹果公司提出的一种基于HTTP的流媒体传输协议,通过m3u8索引文件按序访问ts文件,实现音视频播放。本文介绍了如何通过浏览器找到m3u8文件,解析m3u8文件获取ts文件地址,下载ts文件并解密(如有必要),最后使用ffmpeg合并ts文件为mp4文件。