CSV 파일을 Pandas DataFrame으로 가져오기
다음 CSV 파일을 팬더로 읽으려면 어떻게 해야 합니까?
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
pandas.read_csv
구조를 위해:
import pandas as pd
df = pd.read_csv("data.csv")
print(df)
이를 통해 판다를 산출합니다.
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 파일을 팬더 DataFrame으로 읽으려면 를 사용해야 합니다.sep=','
기본적으로
그러나 여기서 이야기가 끝나는 것은 아닙니다. 데이터는 다양한 형식으로 존재하며 다양한 방식으로 저장되므로 종종 추가 파라미터를 전달해야 합니다.read_csv
데이터가 제대로 읽히는지 확인합니다.
다음 표는 CSV 파일에서 발생하는 일반적인 시나리오와 사용해야 할 적절한 인수를 나열한 것입니다.데이터를 읽으려면 일반적으로 아래 인수의 전부 또는 일부 조합이 필요합니다.
┌───────────────────────────────────────────────────────┬───────────────────────┬────────────────────────────────────────────────────┐
│ pandas Implementation │ Argument │ Description │
├───────────────────────────────────────────────────────┼───────────────────────┼────────────────────────────────────────────────────┤
│ pd.read_csv(..., sep=';') │ sep/delimiter │ Read CSV with different separator¹ │
│ pd.read_csv(..., delim_whitespace=True) │ delim_whitespace │ Read CSV with tab/whitespace separator │
│ pd.read_csv(..., encoding='latin-1') │ encoding │ Fix UnicodeDecodeError while reading² │
│ pd.read_csv(..., header=False, names=['x', 'y', 'z']) │ header and names │ Read CSV without headers³ │
│ pd.read_csv(..., index_col=[0]) │ index_col │ Specify which column to set as the index⁴ │
│ pd.read_csv(..., usecols=['x', 'y']) │ usecols │ Read subset of columns │
│ pd.read_csv(..., thousands='.', decimal=',') │ thousands and decimal │ Numeric data is in European format (eg., 1.234,56) │
└───────────────────────────────────────────────────────┴───────────────────────┴────────────────────────────────────────────────────┘
각주
기본적으로,
read_csv
성능을 위해 C parser 엔진을 사용합니다.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)
제가 여기서 언급하지 않은 다른 논쟁들도 있지만, 여러분이 가장 자주 마주치게 될 논쟁들입니다.
파이썬의 내장 csv 모듈을 이용한 팬더 라이브러리의 대안이 있습니다.
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 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
언급URL : https://stackoverflow.com/questions/14365542/import-csv-file-as-a-pandas-dataframe
'source' 카테고리의 다른 글
Maria에서 Oracle에 연결하는 상황에서 "libsqora.so .11.1: file not found"라는 오류 메시지가 나타납니다.DB (0) | 2023.09.24 |
---|---|
콘솔에 설치 오류가 표시됨: INSTALL FAIL CONCERTING PROWDER 설치 (0) | 2023.09.24 |
배치 파일/Powershell 스크립트를 실행하여 재생 장치 (0) | 2023.09.24 |
활동 컨텍스트와 응용프로그램 컨텍스트의 차이 (0) | 2023.09.24 |
요소의 모든 자식에게 스타일을 적용하려면 어떻게 해야 합니까? (0) | 2023.09.24 |