[Python] 파이썬 pandas csv 엑셀 파일 불러오기, 분석하기, 수정하기, 쓰기

본 포스팅에서는 파이썬의 pandas 라이브러리를 통해 csv파일과 엑셀 파일을 다루는 방법에 대해 다루어볼까합니다.

pandas 판다스 라이브러리

pandas 판다스 라이브러리는 데이터 처리에 효율적인 데이터 구조를 제공하여 데이터 분석에 많이 사용되는데요.

행과 열로 이루어진 데이터 DataFrame 객체를 만들어 다룰 수 있다보니 안정적으로 대용량의 데이터들을 처리하는데 매우 편리한 도구입니다.

설치하는 방법은 터미널이나 명령 프롬프트 창에

pip install pandas

파이썬 버전이 3 이상인 경우,

pip3 install pandas

통해 pandas 라이브러리를 설치할 수 있습니다.

pandas 설치

설치 완료 후 파이썬 파일에서 아래 명령어를 통해

import pandas as pd

‘pd’ 라는 명칭으로 재정의한 pandas 라이브러리를 가져올 수 있습니다.

엑셀, csv 파일 불러오기

예시 csv 파일
예시로 사용될 gasprcies.csv: 10개국의 1990년부터 2008년까지의 평균 기름값[$US per gallon]을 정리한 csv 파일
출처: US Dept. of Energy

pandas 라이브러리의 read_csv() 함수를 사용하여 csv 파일을 파이썬에서 불러올 수 있습니다.

해당 csv 파일과 파이썬 파일이 같은 폴더(디렉토리)에 있는 경우 csv 파일명만, 다른경우 csv 파일명을 포함한 파일 경로를 함수의 인자로 넣어주시면 됩니다.

df = pd.read_csv('/content/drive/MyDrive/junsview/gasprices.csv')
# 구글 코랩에서 '내 드라이브' junsview 폴더 안에 있는 'gasprices.csv' 라는 파일을 불러옵니다.

위 코드를 통해 ‘gasprices.csv’ 라는 csv 파일을 불러와 pandas 라이브러리의 DataFrame 객체로 저장할 수 있습니다.

DataFrame 객체 df를 출력한 모습입니다.

read_csv()

read_csv() 더 알아보기

엑셀 파일은 read_excel()을 통해 불러올 수 있습니다.

df = pd.read_excel('/content/drive/MyDrive/junsview/예제모음.xlsx',sheet_name="영업매출")

파일 안 시트가 여러개인 경우 sheet_name=”DataFrame 객체로 만들 시트” 옵션을 넣어 정의해주어야 합니다.

read_excel

여러개의 시트를 한번에 불러와 DataFrame 객체로 만들 수도 있습니다. 자세한건 아래 링크를 참고해주세요.

read_excel() 더 알아보기

처음 파일을 불러와서 DataFrame 객체로 만들어주는 함수만 다르고 이후부터는 엑셀 파일도 똑같은 방식으로 작업하실 수 있습니다.

열 이름이 없는 경우

만약에 불러오는 파일에 열 이름 또는 콜럼 네임이 없는 경우에는 부여해 줄 수 있습니다.

df = pd.read_csv('/content/drive/MyDrive/junsview/gasprices.csv',header=None)

header=None

이렇게 read_csv(‘파일경로’, header=None) 안에 옵션을 넣어서 임의로 열 이름을 숫자로 넣어줄 수 있습니다.

예시로 쓰인 파일의 경우 Year, Australia, Canada, France 등 이미 열 이름들이 존재하기 때문에 의미는 없지만, 만약에 없었다면 깔금하게 추가해 줄 수 있습니다.

df = pd.read_csv('/content/drive/MyDrive/junsview/gasprices.csv',header=None,
names=['Year','Australia','Canada','France','Germany','Italy','Japan','Mexico','South Korea','UK','USA'])

names=[]

이렇게 ‘header=None’ 옵션과 더불어 names=[‘열 이름1’, ‘열 이름2’, …] 옵션을 넣으시면 됩니다.

n 개의 행만 불러오기

만약 csv 파일에서 10개의 행만 DataFrame 객체로 불러오고 싶다면, read_csv() 함수의 nrows = ‘원하는 행의 갯수’ 옵션을 넣어주시면 됩니다.

df = pd.read_csv('/content/drive/MyDrive/junsview/gasprices.csv',nrows=10)

첫 5, 마지막 5개의 행만 불러오기

추가적으로 df.head()를 통해 이미 생성된 DataFrame 객체의 첫 5개의 행만 출력할 수 있고 df.tail() 을 통해 마지막 5개의 행을 출력할 수 있습니다.

df.head()

df.tail()

파일 분석하기

데이터 프레임 객체로 파일을 불러온 이후부터는 데이터 프레임 메소드를 사용하여 분석 할 수 있습니다. ‘df’는 read_csv 또는 read_excel 함수를 통해 파일들로 만든 DataFrame 객체를 의미합니다.

df.shape

행과 열의 개수를 반환합니다.

df.shape

튜플 형식으로 행의 개수가 먼저 나오고 그 뒤가 열의 개수입니다.

즉, 예시로 사용된 파일에는 19개의 행이 있고 11개의 열이 있는 것입니다.

len(df)

행 개수를 반환합니다.

len(df)

df.columns

열 이름들을 반환합니다.

df.columns

df.dtypes

각 열의 자료형(int64, float64, object 등등)을 반환합니다.

dtypes 종류

df.dtypes

df.info()

정보를 반환합니다.

df.info()

이렇게 함수를 통해 각 열의 자료형(Dtype), 결측 값을 제외한 값들의 개수 그리고 메모리 사용량 등 여러가지의 정보를 한번에 취합해서 볼 수 있습니다.

df.’열 이름’.unique()

해당 열의 유일값들을 반환합니다.

df.unique()

df.’열 이름’.value_counts()

해당 열의 유일값들의 개수를 반환합니다.

df.value_counts()

df.describe()

각 열의 기본 통계를 반환합니다.

df.describe()

  • count: 결측값을 제외한 값의 개수
  • mean: 평균값
  • std: 표준 편차
  • min: 최소값
  • 25%: 25 백분위수
  • 50%: 50 백분위수
  • 75%: 75 백분위수
  • max: 최대값

파일 수정하기

값 수정

파일을 수정하는 방법은 리스트를 수정하는 방식과 매우 유사합니다.

df.loc['행','열 이름'] = '수정값'

1번 행에 ‘Year’ 열의 값을 300으로 수정하였습니다.

df.loc[]

행 추가/삭제

새로운 행을 추가하고 싶다면,

df.loc['새로운 행'] = ['열 1','열 2', ...]

이렇게 해당 행에 열의 값들을 넣어주면 됩니다.

df.loc[]

행을 삭제하고 싶다면,

df = df.drop('삭제할 행',axis=0)

해당 행을 지정하고 axis=0 옵션을 넣어주면 됩니다.

아래를 통해 행 10이 사라진 것을 확인할 수 있습니다.

[‘삭제할 행1’, ‘삭제할 행2’, …] 식으로 df.drop()에 넣어서 여러 행을 한번에 삭제할 수도 있습니다.

열 추가/삭제

새로운 열을 추가하고 싶다면,

df['새로운 열'] = ['행 1','행 2', ...]

해당 열을 정하고 행의 값들을 넣어주면 됩니다.

df.loc[]

열을 삭제하고 싶다면,

df = df.drop('삭제할 열',axis=1)

해당 열을 지정하고 axis=1 옵션을 넣어주면 됩니다.

‘Australia’ 열이 사라진 것을 확인할 수 있습니다.

[‘삭제할 열1’, ‘삭제할 열2’, …] 식으로 df.drop()에 넣어서 여러 열을 한번에 삭제할 수도 있습니다.

엑셀, csv 파일 쓰기 (저장하기)

파일을 불러온 후 수정을 하였다면 쓰는 방법에 대해 궁금하실 수 있습니다.

아래 코드를 통해 수정 후 새로 저장할 수 있습니다.

df.to_csv('파일명을 포함한 저장할 파일경로')

to_csv()

실행하면, 이렇게 ‘내 드라이브’ 안에 ‘junsview’ 폴더 안에 ‘gasprices2.csv’라는 파일이 생성되었습니다.

새로 저장된 csv

엑셀 파일의 경우,

df.to_excel('파일명을 포함한 저장할 파일경로',sheet_name='시트명')

to_excel

쓰이는 함수와 sheet_name 옵션을 추가로 넣어준다는 것 말고는 똑같습니다.

새로 저장된 엑셀

결론

본 포스팅에서는 파이썬 pandas 라이브러리를 사용해서 DataFrame 객체를 만들고 엑셀과 csv 파일을 분석하고, 수정하고, 다시 저장하는 방법에 대해 알아보았습니다.

예시로 사용한 파이썬 개발 환경은 구글 코랩으로 궁금하신 분들은 참고해주세요.

답글 남기기