pandas로 csv, text, excel, json 읽고 쓰기 ( read, write )

Hyun·2022년 5월 20일
0

기타등등

목록 보기
1/11

pd.read_html, read_xml, read_json => BeautifulSoup 이용하자!


pd.DataFrame : 데이터프레임 생성

df = pd.DataFrame({"foo": range(5), "bar": range(5, 10)})  

pd.read_csv <-> df.to_csv

  • pd.read_csv
import pandas as pd
df = pd.read_csv('data.csv')
df = pd.read_csv(os.path.join(_DATA_DIR,"_.txt"), delimiter="\t")
  • df.to_csv
df.to_csv(index=False)

# out.csv를 지니는 out.zip 생성
compression_opts = dict(method='zip', archive_name='out.csv')  
df.to_csv('out.zip', index=False, compression=compression_opts)  

# folder에 csv 파일을 쓰기 위해서 path 지정
# version 1.
from pathlib import Path  
filepath = Path('folder/subfolder/out.csv')  
filepath.parent.mkdir(parents=True, exist_ok=True)  
df.to_csv(filepath)  

# version 2.
import os  
os.makedirs('folder/subfolder', exist_ok=True)  
df.to_csv('folder/subfolder/out.csv')  

pd.read_table

df = pd.read_table('_.txt')
df = pd.read_table('data.csv')
  • filepath_or_buffer : 읽을 경로
  • seq : sep가 None일 때, C engine은 자동적으로 separator을 찾을 수 없지만, python parsing engine은 sniffer 도구인 csv.Sniffer으로 자동적으로 찾을 수 있다. 1자보다 길과 \s+와 다른 구분 기호는 정규표현식으로 해석된다.
    • default : ','
  • optional
    • header : int나 int로 된 list, None. 전달된 이름이 없으면 동작은 header=None과 동일하고 열 이름은 파일의 첫 번째 줄에서 유추한다.
      • default : 'infer'
    • names : column의 이름 지정
    • index_col : int, str, int/str의 sequence, False. df의 row label으로 사용할 column
      • default : None

df.to_pickle

DataFrame.to_pickle(path, compression='infer', protocol=HIGHEST_PROTOCOL, storage_options=None)

df.to_pickle("./dummy.pkl")		# 버전 0.20.3. 이하에서만 보장된다.
df = pd.read_pickle("./dummy.pkl")

pd.read_excel <-> df.to_excel

  • pd.read_excel
df = pd.read_excel('tmp.xlsx', index_col=0)
df = pd.read_excel(open('tmp.xlsx', 'rb'), sheet_name='Sheet3')
df = pd.read_excel('tmp.xlsx', index_col=None, header=None) 
df = pd.read_excel('tmp.xlsx', index_col=0, dtype={'Name': str, 'Value': float})  
df = pd.read_excel('tmp.xlsx', index_col=0, na_values=['string1', 'string2']) 
df = pd.read_excel('tmp.xlsx', index_col=0, comment='#')
  • df.to_excel
df.to_excel("output.xlsx")  
df.to_excel("output.xlsx", sheet_name='Sheet_name_1') 

# 2 sheet 이상 작성하고 싶을 때
with pd.ExcelWriter('output.xlsx') as writer:  
    df1.to_excel(writer, sheet_name='Sheet_name_1')
    df2.to_excel(writer, sheet_name='Sheet_name_2')

# 기존 있는 excel 파일에 data append
with pd.ExcelWriter('output.xlsx', mode='a') as writer:  
    df.to_excel(writer, sheet_name='Sheet_name_3')

pd.read_json <-> df.to_json

pd.read_json(path, orient='split')
pd.read_json(path, orient='index')
pd.read_json(path, orient='records')
pd.read_json(path, orient='table')
df.to_json(orient='split')
df.to_json(orient='index')
df.to_json(orient='records')

result = df.to_json(orient='table')
parsed = json.loads(result)
json.dumps(parsed, indent=4) 

0개의 댓글