나는 Pandas를 사용하여 추천인을 만들고 있으며, 10 억 개의 레코드와 같은 큰 csv 파일을로드해야합니다. 내 입력 파일은 다음과 같다 :색인 및 열을 제외한 Pandas read_csv dtype
P1 P2는 ...
1 1 0 ...
B 0 0 0 ...
C 0 0 케이 ... 1
400 열 근처에 k가 있습니다.
나는이 호출 내 파일을 읽으려고 :
내가 파일을 읽을pd.read_csv(url,header=0, sep="\t",index_col=0,encoding="utf-8")
는 팬더 잘못 내 데이터의 모든 숫자가 수레 것으로 추측. 로드 프로세스에서 훨씬 더 많은 공간을 절약하기 위해 데이터를 int 유형으로 만들려고합니다. 나는 옵션을 사용하려고 : dtype=int
을하지만,이 오류가 와서 :
ValueError: invalid literal for int() with base 10: 'a'
나는이 내 인덱스 및 열 문자열 있다는 사실 때문이라고 생각한다.
열에 대한 데이터 유형을 수동으로 지정하기 위해 사전을 사용할 수는 있지만 권장 사항을 작성하기 때문에 열과 색인 파일을 미리 알 수 없으므로 사전에을 원합니다. 새 파일이 추가 될 때마다 사전을 다시 작성하지 않아야합니다.
read_csv
메서드를 으로 지정하면 색인 및 열 이름이 아닌 내 테이블의 데이터에만 정수 유형을 설정할 수 있습니까? (처럼) 데이터 유형 anyfuther 문제가있는 경우, 게시하시기 바랍니다
df = pd.read_csv(url,header=0, sep="\t",index_col=0,encoding="utf-8")
def check_to_int(x):
try:
return int(x)
except:
return x
for i in df.columns:
df[i] = df[i].apply(check_to_int)
또는 메일로 연락 :
메모리 사용으로 인해로드 된 Datafrane에 대한 기능을 사용하고 싶지 않습니다.단지 메모리 공간을 확보하기 위해 올바른 데이터 유형을 설정하기 위해 read_csv 메소드를 올바르게 구성하는 방법이 있는지 알고 싶습니다. 솔루션에서 전체 데이터 프레임을 float64로로드 한 다음 메모리에 복사본을 만든 다음 현재로서는 나에게 도움이되지 않습니다. 어쨌든 고마워요 –
가능한 다른 해결책으로 수정합니다. –