Pandas csv 데이터 읽어오기 & 기본정보 확인하기 ( read_csv(), info(), head(), tail(), shape, columns...)
안녕하세요!
이번에는 파일을 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" 를 사용합니다. 이런 여러 가지 설정들은 따로 찾아보시는 걸 추천드립니다.
자, 이제 파일을 읽어왔습니다. 저는 상가업소 의료기관을 읽어왔는데요! 이런 정보들은 "공공데이터 포털" 에서 다운로드하실 수 있습니다
이제 이렇게 읽어온 정보를 확인해야 합니다. 사람으로 치면 신상정보를 알려준다 생각하시면 편할 거 같습니다!
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() 은 제일 마지막에 있는 애들을 불러옵니다.
굉장히 간단하죠?
다음엔 이런 정보를 가지고 필요 없는 정보, 값들을 제거해보겠습니다.
감사합니다!