Daily Develope

[Python] 엑셀 파일 다루기 with Pandas 본문

Develope/Python

[Python] 엑셀 파일 다루기 with Pandas

noggame 2024. 1. 22. 08:37

설치

python -m pip install --upgrade pip
python -m pip install pandas
python -m pip install openpyxl

python -m pip install xlsxwriter
# xlsxwriter은 파일을 쓸 때 인코딩 혹은 문자깨짐으로인한 오류를 처리하기 위해 설치

기능

엑셀파일 불러오기

import pandas as pd

dataset = pd.read_excel("{파일경로}/{파일명}.xlsx", header=0)

엑셀파일 저장하기

단일 Sheet 저장

import pandas as pd

# 1) data frame 생성
my_header = ["단어", "단어 길이"]
my_data = [["바나나", "3"], ["사과", "2"], ["대머리독수리", "6"]]

df = pd.DataFrame(my_data, columns=my_header)

# 2) excel 파일로 저장
df.to_excel("my_output.xlsx", sheet_name="단어 길이")

다중 Sheet 저장

import pandas as pd

my_header = ["단어", "단어 길이"]
my_data1 = [["바나나", "3"], ["사과", "2"], ["대머리독수리", "6"]]
my_data2 = [["수영", "2"], ["사이클", "3"], ["마라톤", "3"]]

# 엑셀파일 생성 및 my_data1저장
df1 = pd.DataFrame(my_data1, columns=my_header)
with pd.ExcelWriter(f"./word_counting.xlsx", mode="w", engine="openpyxl") as excel_writer:
    df1.to_excel(excel_writer, sheet_name=f"과일")

# 기존 엑셀파일에 my_data2 Sheet 추가
df2 = pd.DataFrame(my_data2, columns=my_header)
with pd.ExcelWriter(f"./word_counting.xlsx", mode="a", engine="openpyxl") as excel_writer:
    df2.to_excel(excel_writer, sheet_name=f"운동")

데이터 처리

Index 순환

import pandas as pd

dataset = pd.read_excel("{파일경로}/{파일명}.xlsx", header=0)

for row in dataset.iloc:
    print(row)

 

Row 순환 (Header 정보 유지)

import pandas as pd

dataset = pd.read_excel("{파일경로}/{파일명}.xlsx", header=0)

for idx, row in dataset.iterrows():
    print(idx, row[col이름])

 

특정 포맷으로 데이터 생성 및 추가

import pandas as pd

# 데이터 형태 정의
data_form = {
    'A' : [],
    'B' : [],
    'C' : []
}
# 데이터 형태에 알맞게 개체 생성
data = pd.DataFrame(data_form)

# 신규 데이터 생성
new_data = {
    'A' : 1.
    'C' : 2
}

# 마지막 행에 데이터 추가
df.loc[len(df)] = new_data

 

특정 조건의 데이터 추출

 

- 특정 조건을 만족하는 row만 추출

import pandas as pd

filepath = "my/file/path.xlsx"
df = pd.read_excel(filepath)

# cond 값이 0인 row를 제외
df = df[df['cond']!=0]

print(df)

 

- 특정 col의 값이 nan인 row를 제외

import pandas as pd

filepath = "my/file/path.xlsx"
df = pd.read_excel(filepath)

# cond 값이 nan인 row 제외
df = df.dropna(subset='cond')

print(df)

 

 

함수 적용

 

- df.map : dataframe의 모든 데이터에 함수 적용한 결과 반환

import pandas as pd

sample = pd.Dataframe(...)

# sample의 모든 데이터에 some_func 함수를 적용 & 반영
sample = sample.map({some_func})

 

- df.apply : dataframe의 특정 데이터에 함수 적용한 결과 반환

import pandas as pd

sample = pd.Dataframe(...)

# sample내 item1 데이터 컬럼에 대해 some_func를 적용하고, 그 결과를 new 컬럼으로 새롭게 생성
sample['new'] = sample['item1'].apply({some_func})

 

기타

Nan 확인

import pandas as pd

if pd.isna(some_value):
    print("nan value")
else:
    print("not Nan")

관련 게시글

엑셀(Excel) 파일 데이터 읽기/쓰기

Comments