如何读取日期为数据之一的 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函数读取文件并将缺失值转化为空字符串