헤더가 그대로있는 Python을 사용하여 CSV 파일을 가져 오는 방법 (첫 번째 열이 숫자가 아닌 열임)
이것은 이전 질문에 대한 정교하지만 파이썬에 대해 더 깊이 탐구하면서 파이썬이 csv 파일을 처리하는 방법에 대해 더 혼란스러워집니다.
csv 파일이 있는데 그 상태로 유지해야합니다 (예 : 텍스트 파일로 변환 할 수 없음). 5 행 x 11 열 배열, 행렬 또는 벡터와 동일합니다.
나는 여기에서 찾은 다양한 방법과 다른 장소 (예 :)를 사용하여 csv에서 읽기를 시도하여 python.org
열과 행 사이의 관계를 유지합니다. 여기서 첫 번째 행과 첫 번째 열은 숫자가 아닌 값입니다. 나머지는 부동 소수점 값이며 양수 및 음수 부동의 혼합을 포함합니다.
내가 원하는 것은 csv를 가져 와서 파이썬으로 컴파일하여 열 헤더를 참조하는 경우 행에 저장된 관련 값을 반환하도록하는 것입니다. 예를 들면 :
>>> workers, constant, age
>>> workers
w0
w1
w2
w3
constant
7.334
5.235
3.225
0
age
-1.406
-4.936
-1.478
0
기타 등등...
이런 종류의 데이터 구조를 처리하는 기술을 찾고 있습니다. 저는 파이썬을 처음 접했습니다.
Python의 csv 모듈은 이러한 데이터를 보는 일반적인 방법 인 행 단위로 데이터를 처리합니다. 컬럼 방식의 접근 방식을 원하는 것 같습니다. 여기에 한 가지 방법이 있습니다.
파일 이름이 지정 myclone.csv
되고 다음을 포함 한다고 가정합니다.
workers,constant,age
w0,7.334,-1.406
w1,5.235,-4.936
w2,3.2225,-1.478
w3,0,0
이 코드는 한두 가지 아이디어를 제공합니다.
>>> import csv
>>> f = open('myclone.csv', 'rb')
>>> reader = csv.reader(f)
>>> headers = next(reader, None)
>>> headers
['workers', 'constant', 'age']
>>> column = {}
>>> for h in headers:
... column[h] = []
...
>>> column
{'workers': [], 'constant': [], 'age': []}
>>> for row in reader:
... for h, v in zip(headers, row):
... column[h].append(v)
...
>>> column
{'workers': ['w0', 'w1', 'w2', 'w3'], 'constant': ['7.334', '5.235', '3.2225', '0'], 'age': ['-1.406', '-4.936', '-1.478', '0']}
>>> column['workers']
['w0', 'w1', 'w2', 'w3']
>>> column['constant']
['7.334', '5.235', '3.2225', '0']
>>> column['age']
['-1.406', '-4.936', '-1.478', '0']
>>>
숫자 값을 부동 소수점으로 가져 오려면 다음을 추가하십시오.
converters = [str.strip] + [float] * (len(headers) - 1)
그리고 이렇게
for h, v, conv in zip(headers, row, converters):
column[h].append(conv(v))
위의 비슷한 두 줄 대신 각 행에 대해.
Python 2의 경우
import csv
with open( <path-to-file>, "rb" ) as theFile:
reader = csv.DictReader( theFile )
for line in reader:
# line is { 'workers': 'w0', 'constant': 7.334, 'age': -1.406, ... }
# e.g. print( line[ 'workers' ] ) yields 'w0'
Python에는 강력한 기본 제공 CSV 처리기가 있습니다. 사실 대부분의 것들은 이미 표준 라이브러리에 내장되어 있습니다.
Python 3의 경우
Remove the rb
argument and use either r
or don't pass argument (default read mode
).
with open( <path-to-file>, 'r' ) as theFile:
reader = csv.DictReader(theFile)
for line in reader:
# line is { 'workers': 'w0', 'constant': 7.334, 'age': -1.406, ... }
# e.g. print( line[ 'workers' ] ) yields 'w0'
print(line)
You can use pandas library and reference the rows and columns like this:
import pandas as pd
input = pd.read_csv("path_to_file");
#for accessing ith row:
input.iloc[i]
#for accessing column named X
input.X
#for accessing ith row and column named X
input.iloc[i].X
ReferenceURL : https://stackoverflow.com/questions/3428532/how-to-import-a-csv-file-using-python-with-headers-intact-where-first-column-is
'programing tip' 카테고리의 다른 글
별도의 창에서 크롬 디버거를 열 수 있습니까? (0) | 2021.01.09 |
---|---|
Python UnicodeDecodeError-인코딩을 오해하고 있습니까? (0) | 2021.01.09 |
다시 입력하지 않고 data.frame () 내에서 열 이동 (0) | 2021.01.09 |
CSS를 사용하여 모서리 자르기 (0) | 2021.01.09 |
웹팩을 사용하는 여러 HTML 파일 (0) | 2021.01.08 |