《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

相关文章
|
8月前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
482 2
|
8月前
|
存储 Java 数据处理
(numpy)Python做数据处理必备框架!(一):认识numpy;从概念层面开始学习ndarray数组:形状、数组转置、数值范围、矩阵...
Numpy是什么? numpy是Python中科学计算的基础包。 它是一个Python库,提供多维数组对象、各种派生对象(例如掩码数组和矩阵)以及用于对数组进行快速操作的各种方法,包括数学、逻辑、形状操作、排序、选择、I/0 、离散傅里叶变换、基本线性代数、基本统计运算、随机模拟等等。 Numpy能做什么? numpy的部分功能如下: ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组 用于对整组数据进行快速运算的标准数学函数(无需编写循环)。 用于读写磁盘数据的工具以及用于操作内存映射文件的工具。 线性代数、随机数生成以及傅里叶变换功能。 用于集成由C、C++
690 1
|
8月前
|
算法 Java Docker
(Python基础)新时代语言!一起学习Python吧!(三):IF条件判断和match匹配;Python中的循环:for...in、while循环;循环操作关键字;Python函数使用方法
IF 条件判断 使用if语句,对条件进行判断 true则执行代码块缩进语句 false则不执行代码块缩进语句,如果有else 或 elif 则进入相应的规则中执行
1495 1
|
8月前
|
存储 Java 索引
(Python基础)新时代语言!一起学习Python吧!(二):字符编码由来;Python字符串、字符串格式化;list集合和tuple元组区别
字符编码 我们要清楚,计算机最开始的表达都是由二进制而来 我们要想通过二进制来表示我们熟知的字符看看以下的变化 例如: 1 的二进制编码为 0000 0001 我们通过A这个字符,让其在计算机内部存储(现如今,A 字符在地址通常表示为65) 现在拿A举例: 在计算机内部 A字符,它本身表示为 65这个数,在计算机底层会转为二进制码 也意味着A字符在底层表示为 1000001 通过这样的字符表示进行转换,逐步发展为拥有127个字符的编码存储到计算机中,这个编码表也被称为ASCII编码。 但随时代变迁,ASCII编码逐渐暴露短板,全球有上百种语言,光是ASCII编码并不能够满足需求
360 4
|
8月前
|
JSON 算法 API
Python中的json模块:从基础到进阶的实用指南
本文深入解析Python内置json模块的使用,涵盖序列化与反序列化核心函数、参数配置、中文处理、自定义对象转换及异常处理,并介绍性能优化与第三方库扩展,助你高效实现JSON数据交互。(238字)
689 4
|
JSON 数据格式 Python
Python编程:利用JSON模块编程验证用户
Python编程:利用JSON模块编程验证用户
186 1
|
存储 JSON JavaScript
python序列化: json & pickle & shelve 模块
python序列化: json & pickle & shelve 模块
|
存储 JSON 数据格式
Python 输入输出与文件处理: io、pickle、json、csv、os.path 模块详解
Python 输入输出与文件处理: io、pickle、json、csv、os.path 模块详解
392 0
|
JSON 数据格式 Python
Python标准库中包含了json模块,可以帮助你轻松处理JSON数据
【4月更文挑战第30天】Python的json模块简化了JSON数据与Python对象之间的转换。使用`json.dumps()`可将字典转为JSON字符串,如`{"name": "John", "age": 30, "city": "New York"}`,而`json.loads()`则能将JSON字符串转回字典。通过`json.load()`从文件读取JSON数据,`json.dump()`则用于将数据写入文件。
264 1

热门文章

最新文章

推荐镜像

更多