팬더 또는 다른 파이썬 모듈로 특정 열 읽기
저는 이 웹페이지의 csv 파일을 가지고 있습니다.다운로드한 파일의 일부 열을 읽고 싶습니다(csv 버전은 오른쪽 상단 모서리에서 다운로드할 수 있습니다).
두 개의 열을 원한다고 가정해 보겠습니다.
- 59 헤더에 있는 것은
star_name
- 머리글에 있는 60은
ra
.
그러나 어떤 이유로 인해 웹 페이지 작성자는 때때로 열을 이동하기로 결정합니다.
결국 저는 가치가 빠질 수 있다는 것을 염두에 두고 이런 것을 원합니다.
data = #read data in a clever way
names = data['star_name']
ras = data['ra']
이렇게 하면 나중에 열을 다시 변경할 때 이름을 올바르게 유지할 경우 프로그램이 오작동하는 것을 방지할 수 있습니다.
지금까지 저는 다양한 방법을 사용해 보았습니다.csv
모듈을 구성하고 다시 전송합니다.pandas
모듈.둘 다 운이 없었습니다.
EDIT (두 줄 + 내 데이터 파일의 헤더 추가)죄송합니다. 매우 깁니다.)
# name, mass, mass_error_min, mass_error_max, radius, radius_error_min, radius_error_max, orbital_period, orbital_period_err_min, orbital_period_err_max, semi_major_axis, semi_major_axis_error_min, semi_major_axis_error_max, eccentricity, eccentricity_error_min, eccentricity_error_max, angular_distance, inclination, inclination_error_min, inclination_error_max, tzero_tr, tzero_tr_error_min, tzero_tr_error_max, tzero_tr_sec, tzero_tr_sec_error_min, tzero_tr_sec_error_max, lambda_angle, lambda_angle_error_min, lambda_angle_error_max, impact_parameter, impact_parameter_error_min, impact_parameter_error_max, tzero_vr, tzero_vr_error_min, tzero_vr_error_max, K, K_error_min, K_error_max, temp_calculated, temp_measured, hot_point_lon, albedo, albedo_error_min, albedo_error_max, log_g, publication_status, discovered, updated, omega, omega_error_min, omega_error_max, tperi, tperi_error_min, tperi_error_max, detection_type, mass_detection_type, radius_detection_type, alternate_names, molecules, star_name, ra, dec, mag_v, mag_i, mag_j, mag_h, mag_k, star_distance, star_metallicity, star_mass, star_radius, star_sp_type, star_age, star_teff, star_detected_disc, star_magnetic_field
11 Com b,19.4,1.5,1.5,,,,326.03,0.32,0.32,1.29,0.05,0.05,0.231,0.005,0.005,0.011664,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,2008,2011-12-23,94.8,1.5,1.5,2452899.6,1.6,1.6,Radial Velocity,,,,,11 Com,185.1791667,17.7927778,4.74,,,,,110.6,-0.35,2.7,19.0,G8 III,,4742.0,,
11 UMi b,10.5,2.47,2.47,,,,516.22,3.25,3.25,1.54,0.07,0.07,0.08,0.03,0.03,0.012887,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,2009,2009-08-13,117.63,21.06,21.06,2452861.05,2.06,2.06,Radial Velocity,,,,,11 UMi,229.275,71.8238889,5.02,,,,,119.5,0.04,1.8,24.08,K4III,1.56,4340.0,,
이를 위한 쉬운 방법은pandas
이런 도서관.
import pandas as pd
fields = ['star_name', 'ra']
df = pd.read_csv('data.csv', skipinitialspace=True, usecols=fields)
# See the keys
print df.keys()
# See content in 'star_name'
print df.star_name
여기서 문제는skipinitialspace
머리글의 공백을 제거합니다.그래서 'star_name'은 'star_name'이 됩니다.
최신 팬더 설명서에 따르면 읽고 싶은 열만 선택하여 csv 파일을 읽을 수 있습니다.
import pandas as pd
df = pd.read_csv('some_data.csv', usecols = ['col1','col2'], low_memory = True)
사용하는 방법usecols
데이터 프레임에서 선택한 열만 읽습니다.
사용 중입니다.low_memory
파일을 내부적으로 처리할 수 있도록 합니다.
위의 답변은 python2에 대한 것입니다.그래서 python 3 사용자들을 위해 저는 이 답변을 드립니다.아래 코드를 사용할 수 있습니다.
import pandas as pd
fields = ['star_name', 'ra']
df = pd.read_csv('data.csv', skipinitialspace=True, usecols=fields)
# See the keys
print(df.keys())
# See content in 'star_name'
print(df.star_name)
위의 문제에 대한 해결책을 다른 방식으로 구했습니다. CSV 파일 전체를 읽지만 디스플레이 부분을 조정하여 원하는 내용만 표시할 수 있습니다.
import pandas as pd
df = pd.read_csv('data.csv', skipinitialspace=True)
print df[['star_name', 'ra']]
이것은 기본적인 학습과 데이터 프레임의 열을 기반으로 데이터를 필터링하는 시나리오의 일부에 도움이 될 수 있습니다.
당신은 이 방법을 시도해 볼 필요가 있다고 생각합니다.
import pandas as pd
data_df = pd.read_csv('data.csv')
print(data_df['star_name'])
print(data_df['ra'])
언급URL : https://stackoverflow.com/questions/26063231/read-specific-columns-with-pandas-or-other-python-module
'programing' 카테고리의 다른 글
구글 recetcha에서 사용자가 확인란을 선택한 js를 확인하는 방법은 무엇입니까? (0) | 2023.09.02 |
---|---|
iOS 기기의 디스플레이가 어두워지거나 꺼지는 것을 방지하려면 어떻게 해야 합니까? (0) | 2023.09.02 |
이미지 보기와 텍스트 보기가 포함된 선형 레이아웃 대신 복합 그리기 가능한 테이블을 사용하는 방법 (0) | 2023.09.02 |
Android에서의 활동 전환 (0) | 2023.09.02 |
Mysql2 분할 오류 ubuntu22.04 (0) | 2023.09.02 |