gpt4 book ai didi

与 csv 文件中的日期值相关的 Python 问题

转载 作者:行者123 更新时间:2023-12-01 06:16:25 24 4
gpt4 key购买 nike

我正在将包含日期数据的数据文件加载到 csv.DictReader

数据如下所示:

date,   weight, blood_pressure, sugar_level
1/1/01, 120.1, 100.1, 25.2
2/1/01, 130.1, 102.1, 26.2
3/1/01, 110.1, 120.1, 24.2
4/1/01, 130.1, 130.1, 28.2
5/1/01, 160.1, 104.1, 27.0
6/1/01, 150.5, 100.1, 22.5
7/1/01, 120.2, 129.1, 25.2
... etc...

我想编写一个函数,允许我传入字典(从 csv 文件读取),并返回一个纪元前的列的先前值。由于 Python 中没有枚举,我将使用枚举来“约束”允许的纪元和列名称:

到目前为止我的代码片段看起来像这样:

import csv;

headers = ['date', 'weight', 'blood_pressure', 'sugar_level']
data = csv.DictReader(csvfile, headers);

epoch_type = (week_ago, fortnight_ago, month_ago);
column_names = headers[1:];

def function get_previous_value(data, column_name, epoch_name):
""" Note: data is assumed to be sorted in date ascending order """
""" Returns the previous value in the data, using the specified """
""" column name and epoch type """

如果有人能展示如何实现此功能,我将不胜感激

[编辑]将参数名称从“lookback”更改为“epoch_name”以帮助清晰

最佳答案

首先,请不要在Python中的命令后面使用;

import datetime
import csv

WEEK = datetime.timedelta(weeks=1)
DAY = datetime.timedelta(days=1)
MONTH = datetime.timedelta(days=30)

# read the entire file to memory in a dict keyed by date
data = {}
with open('file.csv') as csvfile:
for row in csv.DictReader(csvfile):
data[datetime.datetime.strptime(row['date'], '%d/%m/%y').date()] = row

现在只需查询数据:

# blood pressure one week ago:
print data[(datetime.datetime.now() - WEEK).date()]['blood_pressure']

# the entire data for two months ago:
print data[(datetime.datetime.now() - 2 * MONTH).date()]

作为额外的奖励,您可以使用 dateutilrelativedelta s 制作诸如“上个月的最后一个星期五”之类的内容。

<小时/>

编辑:如果文件太大而无法容纳内存,最好的解决方案是使用数据库。

将整个 csv 文件读取到 sqlite 数据库中。您可以使用 python 来执行此操作,但 sqlite 已经可以自行将 csv 文件导入为表格式,并且使用它比使用 python 读取和解析文件更快。

然后你就可以查询数据库了:

import sqlite3
import datetime

# connect to db
con = sqlite3.connect('myfile.db', detect_types=sqlite3.PARSE_DECLTYPES)

date_i_want = datetime.date(2001, 1, 6)
cur.execute('SELECT * FROM data WHERE date = ?', (date_i_want,))
row = cur.fetchone()

关于与 csv 文件中的日期值相关的 Python 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3137505/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com