Akashic Records

Pandas 텍스트 및 이진 데이터 읽기 본문

Python for Beginners

Pandas 텍스트 및 이진 데이터 읽기

Andrew's Akashic Records 2024. 7. 16. 18:23
728x90

Pandas

 

판다스(Pandas)는 다양한 형태의 데이터를 읽고 쓸 수 있는 강력한 입출력 기능을 제공합니다. 특히 텍스트와 이진 데이터를 읽기 위한 함수들이 제공되며, 이를 통해 데이터 분석과 조작 작업을 쉽게 시작할 수 있습니다.

텍스트 데이터 읽기

  1. pd.read_csv()
    • 가장 흔히 사용되는 함수 중 하나로, 쉼표로 구분된 값(CSV) 파일을 읽어 DataFrame을 생성합니다.
    • 구분자를 변경하여 다른 텍스트 파일 형식(TSV 등)도 읽을 수 있습니다.
  2. pd.read_table()
    • 기본적으로 탭(\t)으로 구분된 데이터를 읽기 위해 사용됩니다.
    • sep 매개변수를 통해 다른 구분자를 지정할 수 있습니다.
  3. pd.read_fwf()
    • 고정 너비의 열을 갖는 텍스트 파일을 읽을 때 사용합니다.
    • 열의 너비를 지정할 수 있습니다.

이진 데이터 읽기

  1. pd.read_pickle()
    • 파이썬의 피클 형식으로 저장된 객체를 읽어옵니다.
    • 데이터의 파이썬 객체를 그대로 저장하고 복원할 수 있어, 데이터 타입과 인덱스가 유지됩니다.
  2. pd.read_hdf()
    • HDF5 형식의 파일을 읽을 때 사용합니다.
    • 대용량 데이터의 효율적인 저장과 접근을 지원합니다.
  3. pd.read_feather()
    • Feather 형식의 파일을 읽을 때 사용합니다.
    • R과 파이썬 간 데이터 교환을 위해 설계된 경량의 바이너리 형식입니다.

예시 코드

import pandas as pd

# CSV 파일 읽기 예시
df_csv = pd.read_csv('example.csv')
print("CSV:\n", df_csv.head())

# Tab 구분된 파일 읽기 예시
df_tsv = pd.read_csv('example.tsv', delimiter='\t')
print("TSV:\n", df_tsv.head())

# 피클 파일 읽기 예시
df_pickle = pd.read_pickle('example.pkl')
print("Pickle:\n", df_pickle.head())

# HDF5 파일 읽기 예시 (HDF5 파일 경로와 'key'를 지정해야 함)
# df_hdf = pd.read_hdf('example.h5', 'table_key')
# print("HDF5:\n", df_hdf.head())

# Feather 파일 읽기 예시 (Feather 파일 경로 지정)
# df_feather = pd.read_feather('example.feather')
# print("Feather:\n", df_feather.head())

 

 

클립보드, 엑셀, HTML, JSON, SQL, XML 등의 다양한 형식이 포함됩니다. 각각의 형식을 읽기 위한 판다스 함수들을 예시 코드와 함께 설명하겠습니다.

1. 클립보드에서 데이터 읽기

  • pd.read_clipboard()
    • 시스템 클립보드의 데이터를 읽어서 DataFrame으로 변환합니다.
    • 테스트 및 데모 목적으로 유용합니다.

2. 엑셀 파일 읽기

  • pd.read_excel()
    • 엑셀 파일(.xlsx, .xls)에서 데이터를 읽습니다.
    • sheet_name 매개변수를 통해 특정 시트를 지정할 수 있습니다.

3. HTML 파일 읽기

  • pd.read_html()
    • HTML 파일 내의 <table> 태그를 분석하여 DataFrame 리스트를 반환합니다.
    • 웹 페이지에서 테이블 데이터를 직접 읽어올 수 있습니다.

4. JSON 파일 읽기

  • pd.read_json()
    • JSON 형식의 문자열이나 파일을 DataFrame으로 변환합니다.
    • 다양한 JSON 구조에 맞게 orient 매개변수를 조정할 수 있습니다.

5. SQL 데이터베이스에서 읽기

  • pd.read_sql()
    • SQL 쿼리 결과를 DataFrame으로 변환합니다.
    • SQLAlchemy나 SQLite를 사용하여 데이터베이스에 연결할 수 있습니다.

6. XML 파일 읽기

  • pd.read_xml()
    • XML 파일 또는 문자열에서 데이터를 읽어 DataFrame으로 변환합니다.
    • XML의 구조에 따라 xpath 매개변수를 사용하여 특정 요소를 지정할 수 있습니다.

예시 코드

import pandas as pd

# 엑셀 파일 읽기 예시
df_excel = pd.read_excel('example.xlsx')
print("Excel:\n", df_excel.head())

# HTML 파일 읽기 예시 (예를 들어, 웹 페이지 URL)
# df_html_list = pd.read_html('http://example.com/table_page.html')
# print("HTML Table:\n", df_html_list[0].head())

# JSON 파일 읽기 예시
df_json = pd.read_json('example.json')
print("JSON:\n", df_json.head())

# SQL 쿼리 읽기 예시 (예를 들어, SQLite 데이터베이스 사용)
# import sqlite3
# connection = sqlite3.connect('example.db')
# df_sql = pd.read_sql('SELECT * FROM my_table', con=connection)
# print("SQL:\n", df_sql.head())

# XML 파일 읽기 예시
# df_xml = pd.read_xml('example.xml', xpath='//myElement')
# print("XML:\n", df_xml.head())

가장 흔히 사용되는 함수 read_csv

pandas.read_csv() 함수는 CSV 파일을 읽을 때 다양한 옵션을 제공하여 파일의 다양한 형식에 유연하게 대응할 수 있습니다. 여기에는 다양한 매개변수가 포함되어 있어, 데이터를 읽는 과정을 상세하게 제어할 수 있습니다. 주요 옵션들을 아래에 설명하겠습니다:

1. 파일 경로 및 데이터 소스

  • filepath_or_buffer: 문자열, pathlib.Path, py._path.local.LocalPath 또는 파일 객체를 포함할 수 있습니다. URL을 포함한 다양한 파일 경로나 객체를 지정할 수 있습니다.

2. 구분자 및 인코딩

  • sep 또는 delimiter: 각 라인의 필드를 구분하는 문자를 설정합니다. 기본값은 , 입니다.
  • encoding: 파일의 문자 인코딩을 지정합니다. 예를 들어, 'utf-8', 'latin-1' 등이 있습니다.

3. 헤더 및 인덱스 처리

  • header: 헤더(열 이름)가 있는 행의 번호를 지정합니다. 기본값은 0이며, 헤더가 없을 경우 None으로 설정할 수 있습니다.
  • index_col: 인덱스로 사용할 열 번호나 이름을 지정합니다. 기본적으로 None이며, 자동으로 0부터 시작하는 정수 인덱스가 생성됩니다.

4. 데이터 타입 처리

  • dtype: 열의 데이터 타입을 사전 형식으로 지정할 수 있습니다. 예: dtype={'ID': int, 'age': float}.

5. 결측치 처리

  • na_values: 결측치로 인식할 값을 지정합니다. 추가적으로 인식시킬 값들을 리스트 형태로 제공할 수 있습니다.
  • keep_default_na: 기본 결측치 값들(NaN, NA 등)을 유지할지 여부를 결정합니다.
  • na_filter: 결측치 필터링을 활성화할지 설정합니다. 큰 데이터셋에서 성능을 향상시킬 수 있습니다.

6. 날짜 및 시간 파싱

  • parse_dates: 날짜/시간 정보를 파싱할 열을 지정합니다. 리스트 형태로 제공할 수 있으며, 여러 열을 결합하여 날짜를 파싱할 수도 있습니다.

7. 조각 처리

  • chunksize: 파일을 조각(chunk) 단위로 읽을 때 각 조각의 행 수를 지정합니다. 큰 파일을 다룰 때 유용합니다.
  • iterator: 파일을 조각으로 읽을 것인지를 불리언 값으로 설정합니다.

8. 기타 유용한 옵션

  • skiprows: 시작할 때 무시할 행의 수나 리스트를 지정할 수 있습니다.
  • nrows: 읽을 행의 수를 지정합니다.
  • usecols: 읽을 열을 지정할 수 있으며, 열 이름이나 열 번호 리스트를 사용할 수 있습니다.
  • comment: 주석으로 처리할 문자를 설정합니다. 예를 들어, # 뒤에 오는 데이터는 무시됩니다.

예시 코드

import pandas as pd

# CSV 파일 읽기, 특정 옵션 설정
df = pd.read_csv('example.csv',
                 sep=',',
                 header=0,
                 index_col=None,
                 usecols=['Name', 'Age', 'Gender'],
                 dtype={'Age': float},
                 parse_dates=['Date'],
                 skiprows=2,
                 nrows=100,
                 na_values=['NA', 'Missing'])
print(df.head())

이 예시에서는 read_csv() 함수를 사용하여 여러 가지 옵션을 설정하고 데이터를 읽는 방법을 보여줍니다. 데이터의 성격과 필요에 따라 이러한 옵션들을 조정하여 사용할 수 있습니다.

728x90
Comments