【问题标题】:csv.DictReader / csv.DictWriter vs Panda library data Frame -csv.DictReader / csv.DictWriter vs Panda 库数据 Frame -
【发布时间】:2019-08-07 10:38:35
【问题描述】:

我正在尝试用 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 在后台使用 csv 模块来读写 CSV。但是,它的功能要强大得多,因为它可以轻松地选择符合您条件的行,并且该库支持直接绘图。 Pandas 是一个全新的学习工具,但值得一试,因为它非常强大;学习 Python,学习 Pandas。
  • .. 使用 vanderPlas 的“Python 数据科学手册”让自己成为 Pandaat。 (隐藏是因为这几乎是非隐藏广告;p)
  • 非常感谢 MartijnPieters。你是对的 Pandas 强大得多。由于我是新手,它仍然是压倒性的......@ZF007:非常感谢,睡前阅读...... ;-)
  • 虽然 Pandas 很棒,但速度方面 pandas.to_csv 却很慢。对于相对较小的集合,pandas 比 csv.dictwriter.writerows 慢大约 4 倍

标签: python pandas csv dictionary


【解决方案1】:

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()

【讨论】:

  • forceorange,你能评价一下答案吗?谢谢
猜你喜欢
  • 2019-11-24
  • 2018-04-03
  • 1970-01-01
  • 2018-08-08
  • 1970-01-01
  • 1970-01-01
  • 2019-01-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多