如何读取日期为数据之一的 csv 文件?

Posted

技术标签:

【中文标题】如何读取日期为数据之一的 csv 文件?【英文标题】:How to read csv file with date as one of the data? 【发布时间】:2016-12-06 13:51:11 【问题描述】:

这些是我在 excel 和 csv 文件中的数据:

日期、时间、产品类型 2015-01-02,02:29:45 PM,卡片

我在下面尝试了这段代码,它适用于 excel 文件,但不适用于 CSV 文件。

import numpy as np
import pandas as pd

df = pd.read_excel('file.xlsx')
print(df.head())

我在读取 csv 文件时的代码与上述代码几乎相同,但出现错误。请帮忙。

import numpy as np
import pandas as pd
import datetime

df = pd.read_csv('file.csv', index_col='Date', parse_dates=True)
print(df.head())

错误消息: UnicodeDecodeError:“utf-8”编解码器无法解码位置 2 中的字节 0xa4:无效的起始字节

【问题讨论】:

尝试传递encoding='utf-8': df = pd.read_csv('file.csv', index_col='Date', parse_dates=True, encoding='utf-8') 我不是 Pandas 专家,但你试过 df = pd.DataFrame.from_csv() 吗?这就是我通常构建 DataFrames 的方式。 @EdChum : 仍然收到同样的错误 您可能是某种 unicode BOM,您可以尝试'utf-16' 的编码类型,您也可以发布指向 csv 的链接吗? @AndrewL:试过了,没用。 【参考方案1】:

我已修改并删除了我的 csv 文件中的列名,并在下面使用了此代码。有用!

CSV 文件数据

    2015-01-02,02:29:45 PM,Cards
    2015-01-02,05:16:15 PM,Cards
    2015-01-02,05:48:46 PM,Cards
    2015-01-02,03:18:34 PM,Cards
    2015-01-02,05:22:55 PM,Cards

我的代码:

df = pd.read_csv('datacsv.csv', sep=',', parse_dates=[0], header=None,
                         names=['Date', 'Time', 'Value'])

print (df.head())

  Date         Time  Value
0 2015-01-02  02:29:45 PM  Cards
1 2015-01-02  05:16:15 PM  Cards
2 2015-01-02  05:48:46 PM  Cards
3 2015-01-02  03:18:34 PM  Cards
4 2015-01-02  05:22:55 PM  Cards

感谢你们的回复!

【讨论】:

【参考方案2】:

我不确定从文件中提取数据后您打算如何处理数据,因此如果您需要其他格式或其他内容,请告诉我。

我假设您将始终使用 CSV 来处理此代码。下面的代码只是简单地打开您的文件和每一行,用逗号分隔,并附加到一个列表(每个索引是一行代码)以进行良好的组织。

File = open("Filename.csv","r")

Data = []
for lines in File:
    Data.append([lines.split(",")])
'[[Date,Time,Product Type, Date,Time,Cards],[Date2,,,],,,]

【讨论】:

我将使用上述日期作为时间序列。以日期为 x 轴,时间为 y 轴,产品类型为要绘制的点。

以上是关于如何读取日期为数据之一的 csv 文件?的主要内容,如果未能解决你的问题,请参考以下文章

pandas使用read_csv函数读取文件并解析日期数据列(parse dates)pandas使用read_csv函数读取文件并将缺失值转化为空字符串

如何将 csv 文件读取为 dtype datetime64?

如何在读取excel文件时停止python自动日期解析

Pandas日期数据处理:如何按日期筛选显示及统计数据

如何在这种情况下从多个csv文件读取数据并生成报告?

使用 pandas 读取“csv”文件时解析日期时间