개발 Tools/파이썬_Pandas & Numpy

Pandas csv 데이터 읽어오기 & 기본정보 확인하기 ( read_csv(), info(), head(), tail(), shape, columns...)

전컴반 2021. 4. 10. 20:11
반응형

안녕하세요!

이번에는 파일을 pandas 로 읽어오는 법과 데이터의 기본 정보를 확인하는 법을 알아볼까 합니다!

 

먼저, 엄청 많은 파일을 불러올 수 있는데요 

 

엄청 많은 파일을 불러 올 수 있다.

 

엄청나게 많은 파일을 지원하고 있죠?? 자, 이제 파일을 읽어 와 보겠습니다. 불러오는 법은 간단합니다.

 

import pandas as pd

# low_memory = False 는 파일의 정보를 누락없이 가져온다.
df = pd.read_csv(r"파일 경로", low_memory=False) 

 

저는 csv 로 파일을 다운받았기 때문에 csv 로 불러오겠습니다. 먼저 pandas 를 부릅니다. 그리고 read_csv() 즉, csv 로 된 파일을 불러오고 df ( data frame ) 라는 변수에 저장합니다. 그리고 뒤에는 상황에 맞게 설정을 해 줍니다. r 은 읽어오라는 의미입니다. 한글이 깨진다면, encoding 을 설정할 수도 있는데, 파일에 따라 다르지만 보통 "utf-8" 또는 "cp949" 를 사용합니다. 이런 여러 가지 설정들은 따로 찾아보시는 걸 추천드립니다. 

 

자, 이제 파일을 읽어왔습니다. 저는 상가업소 의료기관을 읽어왔는데요! 이런 정보들은 "공공데이터 포털" 에서 다운로드하실 수 있습니다

https://www.data.go.kr/

 

공공데이터 포털

국가에서 보유하고 있는 다양한 데이터를『공공데이터의 제공 및 이용 활성화에 관한 법률(제11956호)』에 따라 개방하여 국민들이 보다 쉽고 용이하게 공유•활용할 수 있도록 공공데이터(Datase

www.data.go.kr

 

 

이제 이렇게 읽어온 정보를 확인해야 합니다. 사람으로 치면 신상정보를 알려준다 생각하시면 편할 거 같습니다!

info() 라는 함수입니다. 사용법은 df.info() 입니다. '.' 은 -의라고 생각하시면 더 좋을 거 같습니다. "df 의 info()" 를 출력합니다

 

# 파일의 정보를 나타냄
print(df.info())

#출력
RangeIndex: 91335 entries, 0 to 91334
Data columns (total 39 columns):
 #   Column        Non-Null Count        Dtype  
---  ------        --------------        -----  
 0   상가업소번호   91335  non-null       int64  
 1   상호명         91335  non-null      object 
 2   지점명         1346   non-null      object 
 				.....
 dtypes: float64(9), int64(7), object(23)
memory usage: 27.2+ MB
None

 

근데 만약 저런 거 다 필요 없고, 우리가 원하는 행렬의 총 갯수, 컬럼의 이름, 또 크기가 너무 커서 미리보기로 보고 싶다면 어떻게 해야 할까요??

 

행렬의 총 갯수를 확인하고 싶다면 shape 라는 걸 사용합니다.

 

# 총 행과 열의 숫자를 반환함
print(df.shape)

# 출력
(91335, 39)

 

총 91335 개의 행과 39개의 열이 존재한다는 걸 알았습니다.

그럼 이번에는 39개에 달하는 컬럼의 이름은 뭔지 알아보겠습니다. 아주 간단합니다. 그냥 뒤에 columns 만 붙이면 됩니다

 

# 컬럼(열)명만 출력한다
print(df.columns)

# 출력
Index(['상가업소번호', '상호명', '지점명', '상권업종대분류코드', '상권업종대분류명', '상권업종중분류코드',
       '상권업종중분류명', '상권업종소분류코드', '상권업종소분류명', '표준산업분류코드', '표준산업분류명', '시도코드',
       '시도명', '시군구코드', '시군구명', '행정동코드', '행정동명', '법정동코드', '법정동명', '지번코드',
       '대지구분코드', '대지구분명', '지번본번지', '지번부번지', '지번주소', '도로명코드', '도로명', '건물본번지',
       '건물부번지', '건물관리번호', '건물명', '도로명주소', '구우편번호', '신우편번호', '동정보', '층정보',
       '호정보', '경도', '위도'],
      dtype='object')

 

쉽죠??

 

그렇다면 이번에는 각각의 모든 값들을 보고 싶은데 91335개 를 다 불러오면 시간도 오래 걸리니 미리보기로 보려면 어떻게 할까요??

head() 라는 직관적인 함수의 이름을 씁니다

 

# 미리보기
print(df.head())

# 출력
   상가업소번호        상호명     지점명 상권업종대분류코드  ...  층정보  호정보          경도         위도
0  19956873      하나산부인과     NaN         S  ...       NaN  NaN  126.814295  37.336344
1  20024149   타워광명내과의원    NaN         S  ...        4  NaN  127.053198  37.488742
2  20152277  조정현신경외과의원   NaN         S  ...       NaN  NaN  126.734841  37.344955
3  20350610   한귀원정신과의원    NaN         S  ...        5  NaN  129.115438  35.166872
4  20364049  더블유스토어수지점  수지점         S  ...       1  NaN  127.095522  37.323528

[5 rows x 39 columns]

 

총 5개의 미리보기를 봤습니다. 만약 5개가 아니라 10개를 보고 싶다면 df.head(10) 라고 하시면 됩니다.

설정이 5개로 돼 있기 때문에 아무 선언 없이 사용하면 5개를 불러옵니다.

 

head() 가 있다면 뭐도 있을까요?

네, tail() 도 있습니다. tail() 은 제일 마지막에 있는 애들을 불러옵니다.

 

굉장히 간단하죠?

 

다음엔 이런 정보를 가지고 필요 없는 정보, 값들을 제거해보겠습니다. 

감사합니다!

반응형