CSV 파일에서 pandas DataFrame 으로 읽는 Python 방법은 무엇입니까 (그런 다음 통계 작업에 사용할 수 있고 다른 유형의 열 등을 가질 수 있음)?
내 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")
그러면 R 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 방법이 있습니까?
답변
구출에 판다 :
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
답변
CSV 파일을 pandas DataFrame으로 읽으려면 pd.read_csv
.
그러나 이것은 이야기가 끝나는 곳이 아닙니다. 데이터는 다양한 형식으로 존재하며 다양한 방식으로 저장되므로 read_csv
데이터를 제대로 읽어 오기 위해 추가 매개 변수를 전달해야하는 경우가 많습니다 .
다음은 사용해야하는 적절한 인수와 함께 CSV 파일에서 발생하는 일반적인 시나리오를 나열한 표입니다. 읽을 아래 당신은 일반적으로 인수의 전부 또는 일부 조합이 필요합니다 사용자의 데이터입니다.
┌──────────────────────────────────────────────────────────┬─────────────────────────────┬────────────────────────────────────────────────────────┐
│ Scenario │ Argument │ Example │
├──────────────────────────────────────────────────────────┼─────────────────────────────┼────────────────────────────────────────────────────────┤
│ Read CSV with different separator¹ │ sep/delimiter │ read_csv(..., sep=';') │
│ Read CSV with tab/whitespace separator │ delim_whitespace │ read_csv(..., delim_whitespace=True) │
│ Fix UnicodeDecodeError while reading² │ encoding │ read_csv(..., encoding='latin-1') │
│ Read CSV without headers³ │ header and names │ read_csv(..., header=False, names=['x', 'y', 'z']) │
│ Specify which column to set as the index⁴ │ index_col │ read_csv(..., index_col=[0]) │
│ Read subset of columns │ usecols │ read_csv(..., usecols=['x', 'y']) │
│ Numeric data is in European format (eg., 1.234,56) │ thousands and decimal │ read_csv(..., thousands='.', decimal=',') │
└──────────────────────────────────────────────────────────┴─────────────────────────────┴────────────────────────────────────────────────────────┘
각주
기본적으로
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에 할당 할 열 이름 목록을 지정할 수 있습니다.“Unnamed : 0″은 이름이 지정되지 않은 인덱스가있는 DataFrame이 CSV에 저장되고 나중에 다시 읽을 때 발생합니다. 읽는 동안 문제를 해결하는 대신 다음을 사용하여 글을 쓸 때 문제를 해결할 수도 있습니다.
df.to_csv(..., index=False)
여기에서 언급하지 않은 다른 주장이 있지만 가장 자주 접하게 될 주장입니다.
답변
다음은 Python의 기본 제공 csv 모듈을 사용하는 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']}
답변
import pandas as pd
df = pd.read_csv('/PathToFile.txt', sep = ',')
그러면 .txt 또는 .csv 파일을 DataFrame으로 가져옵니다.
답변
이 시도
import pandas as pd
data=pd.read_csv('C:/Users/Downloads/winequality-red.csv')
파일 대상 위치를 데이터 세트가있는 위치로 바꾸고 https://medium.com/@kanchanardj/jargon-in-python-used-in-data-science-to-laymans-language-part- URL을
참조하십시오. 1-12ddfd31592f
답변
%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
답변
python 표준 라이브러리에 있는 csv 모듈을 사용하여 CSV 파일을 조작 할 수 있습니다.
예:
import csv
with open('some.csv', 'rb') as f:
reader = csv.reader(f)
for row in reader:
print row