programing

팬더 또는 다른 파이썬 모듈로 특정 열 읽기

newsource 2023. 9. 2. 08:31

팬더 또는 다른 파이썬 모듈로 특정 열 읽기

는 이 웹페이지의 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