我有一个CSV文件"value.txt"
,其中包含以下内容:
该文件的前几行是:
Date,"price","factor_1","factor_2"
2012-06-11,1600.20,1.255,1.548
2012-06-12,1610.02,1.258,1.554
2012-06-13,1618.07,1.249,1.552
2012-06-14,1624.40,1.253,1.556
2012-06-15,1626.15,1.258,1.552
2012-06-16,1626.15,1.263,1.558
2012-06-17,1626.15,1.264,1.572
在R中,我们可以使用
读取此文件price <- read.csv("value.txt")
这将返回一个data.frame,我可以用它来进行统计操作:
> price <- read.csv("value.txt")
> price
Date price factor_1 factor_2
1 2012-06-11 1600.20 1.255 1.548
2 2012-06-12 1610.02 1.258 1.554
3 2012-06-13 1618.07 1.249 1.552
4 2012-06-14 1624.40 1.253 1.556
5 2012-06-15 1626.15 1.258 1.552
6 2012-06-16 1626.15 1.263 1.558
7 2012-06-17 1626.15 1.264 1.572
是否有Pythonic方法来获得相同的功能?
答案 0 :(得分:117)
pandas救援:
import pandas as pd
print pd.read_csv('value.txt')
Date price factor_1 factor_2
0 2012-06-11 1600.20 1.255 1.548
1 2012-06-12 1610.02 1.258 1.554
2 2012-06-13 1618.07 1.249 1.552
3 2012-06-14 1624.40 1.253 1.556
4 2012-06-15 1626.15 1.258 1.552
5 2012-06-16 1626.15 1.263 1.558
6 2012-06-17 1626.15 1.264 1.572
这会返回与R's
类似的pandas DataFrame。
答案 1 :(得分:5)
这是使用Python内置csv module的pandas库的替代方案。
import csv
from pprint import pprint
with open('foo.csv', 'rb') as f:
reader = csv.reader(f)
headers = reader.next()
column = {h:[] for h in headers}
for row in reader:
for h, v in zip(headers, row):
column[h].append(v)
pprint(column) # Pretty printer
将打印
{'Date': ['2012-06-11',
'2012-06-12',
'2012-06-13',
'2012-06-14',
'2012-06-15',
'2012-06-16',
'2012-06-17'],
'factor_1': ['1.255', '1.258', '1.249', '1.253', '1.258', '1.263', '1.264'],
'factor_2': ['1.548', '1.554', '1.552', '1.556', '1.552', '1.558', '1.572'],
'price': ['1600.20',
'1610.02',
'1618.07',
'1624.40',
'1626.15',
'1626.15',
'1626.15']}
答案 2 :(得分:2)
import pandas as pd
df = pd.read_csv('/PathToFile.txt', sep = ',')
这会将您的.txt或.csv文件导入到DataFrame中。
答案 3 :(得分:1)
要将CSV文件作为pandas DataFrame读取,您需要使用pd.read_csv
,但这不是故事的结局。数据以多种不同的格式存在,并且以不同的方式存储,因此您经常需要将其他参数传递给read_csv
以确保正确读取数据。
这是一张表格,列出了CSV文件遇到的常见情况以及您需要使用的适当参数。通常,您需要以下参数的全部或某种组合来读取您的数据。
脚注
默认情况下,
read_csv
使用C解析器引擎来提高性能。 C解析器只能处理单个字符分隔符。如果您的CSV有 多字符分隔符,则需要修改代码以使用'python'
引擎。您还可以传递正则表达式:df = pd.read_csv(..., sep=r'\s*\|\s*', engine='python')
UnicodeDecodeError
以数据以一种编码格式存储但以另一种不兼容的编码格式读取时发生。最常见的 编码方案为'utf-8'
和'latin-1'
,您的数据很可能会 适合其中之一。
header=False
指定CSV中的第一行是数据行而不是标题行,并且names=[...]
允许您 指定列名称列表,以在分配给DataFrame时分配给它 已创建。将具有未命名索引的DataFrame保存到CSV,然后在以后重新读取时,发生“未命名:0”。不必修复 阅读时出现问题,您也可以使用
解决问题df.to_csv(..., index=False)
我这里没有提到其他参数,但这是您最常遇到的参数。
答案 4 :(得分:1)
尝试一下
import pandas as pd
data=pd.read_csv('C:/Users/Downloads/winequality-red.csv')
用找到数据集的位置替换文件目标位置,请参考此URL https://medium.com/@kanchanardj/jargon-in-python-used-in-data-science-to-laymans-language-part-one-12ddfd31592f
答案 5 :(得分:0)
您可以使用python标准库中的csv module来处理CSV文件。
示例:
import csv
with open('some.csv', 'rb') as f:
reader = csv.reader(f)
for row in reader:
print row
答案 6 :(得分:0)
%cd C:\Users\asus\Desktop\python
import pandas as pd
df = pd.read_csv('value.txt')
df.head()
Date price factor_1 factor_2
0 2012-06-11 1600.20 1.255 1.548
1 2012-06-12 1610.02 1.258 1.554
2 2012-06-13 1618.07 1.249 1.552
3 2012-06-14 1624.40 1.253 1.556
4 2012-06-15 1626.15 1.258 1.552
答案 7 :(得分:0)
将熊猫作为pd导入
数据集= pd.read_csv('/ home / nspython / Downloads / movie_metadata1.csv')
答案 8 :(得分:-1)
请注意清洁,但是:
import csv
with open("value.txt", "r") as f:
csv_reader = reader(f)
num = ' '
for row in csv_reader:
print num, '\t'.join(row)
if num == ' ':
num=0
num=num+1
不那么紧凑,但是它可以完成任务:
Date price factor_1 factor_2
1 2012-06-11 1600.20 1.255 1.548
2 2012-06-12 1610.02 1.258 1.554
3 2012-06-13 1618.07 1.249 1.552
4 2012-06-14 1624.40 1.253 1.556
5 2012-06-15 1626.15 1.258 1.552
6 2012-06-16 1626.15 1.263 1.558
7 2012-06-17 1626.15 1.264 1.572