python - csv.DictReader / csv.DictWriter vs Panda 库数据 Frame -
问题描述
我正在尝试用 Python 编写一个程序,它将:
- 从 CSV 文件中读取数据,数据按日期排序
- 通过查找过去 365 天(从 csv 文件中最后一个数据点的日期算起的过去 365 天)来选择一些键和值,以及
- 导出到另一个 csv new_file
- 从写入 new_file 的数据中绘制折线图(导出为图像文件)
我是 Python 新手,一直在研究:
csv.DictReader(csv_file)
/csv.DictWriter
- 熊猫图书馆
DataFrame
我的问题是哪种数据结构最适合我想要实现的目标:字典还是 Panda DataFrames?
到目前为止,我发现 Panda DataFrame 结构非常麻烦。如何从最新数据点的日期(和格式)中选择最后 365 天。
样本数据输入:
date txVolume(USD) adjustedTxVolume(USD) txCount marketcap(USD) price(USD) exchangeVolume(USD) generatedCoins fees activeAddresses averageDifficulty paymentCount medianTxValue(USD) medianFee blockSize blockCount
04/05/2018 7837824038 4235399151 218931 1.65E+11 9695.5 8217829888 1725 39.37853649 695603 4.02E+12 395233 395.3934459 4.04E-05 134387026 138
解决方案
Pandas 有一些学习曲线,但一旦你对它们感到满意,你就会爱上它们。查看您的问题的一种简单解决方案。干杯。
import pandas as pd
import matplotlib.pyplot as plt
from datetime import timedelta
df = pd.read_csv(r"your-folder\dates.csv", parse_dates=[0]) # assuming dates are in the first column
df.sort_values(by="date", ascending=False, inplace=True)
last_date = df["date"].max().date()
start_date = df["date"].max().date() - timedelta(days=365)
dfRange = df[(df["date"].dt.date >= start_date) & (df["date"].dt.date <= last_date)]
plt.scatter(dfRange["txCount"],dfRange["txVolume(USD)"])
plt.xlabel("txCount")
plt.ylabel("txVolume(USD)")
plt.savefig(r"target-location\dates.png")
plt.close()
推荐阅读
- reactjs - 状态挂钩不会在 redux 存储更新时更新状态参数
- facebook - 使 facebook 页面可通过 api 访问
- python-3.x - 如何在 python 中获得 Boost::unit_test::framework::master_test_suite 功能?
- python - FastAPI - (psycopg2.OperationalError) 服务器意外关闭连接
- python - 我如何使用记录器制作日志报告(文件和标准输出)然后运行 pytest 测试
- html - 显示没有滚动条的元素
- python - Python 服务器不发送数据/客户端不接收
- android - 进程死亡后恢复应用程序
- r - 将包裹从长变宽
- rust - 如何在不复制 actix_web 的情况下将数据从请求传递到响应