본문 바로가기
개발해보겡

pandas read_csv와 DataFrame 인덱싱 기초

by 개발자욱 2021. 7. 16.
728x90
반응형

머신러닝, 딥러닝 공부와 함께 

파이썬을 이용한 데이터 분석 연습을 위한 

파이썬으로 데이터 주무르기 1장의 시작!!

'서울시 구별 CCTV 현황 분석하기' 에 대한 요약입니다.


참고

책 내용의 변동 사항과 소스 코드와 데이터를 다운받는 방법을 참고하세요

파이썬으로 데이터 주무르기 전체 소스코드 및 데이터 다운받기

 

파이썬으로 데이터 주무르기 전체 소스코드 및 데이터 다운받기

올해 머신러닝, 딥러능 공부를 시작하게 되면서 파이썬 언어를 가장 먼저 배우게 되었는데요. '파이썬으로 데이터 주무르기'를 통해 파이썬 언어를 이용한 데이터 분석 예제를 풀어 보려고 합니

bebestberich.tistory.com


Step 1. pandas라이브러리로 csv파일을 읽어오기 

* CSV(Comma-Separated Values): 스프레드시트 데이터를 저장할 때 가장 널리 쓰이는 파일 형식

* 엑셀등 여러 응용프로그램에서도 지원

* CSV 형식 (각 열은 콤마로 구분, 각 행은 줄바꿈 문자로 구분)

* 파이썬에서 CSV 파일로 저장/읽기 방법

  - csv 라이브러리 사용

pandas 라이브러리로 csv 파일 읽기

import pandas as pd
CCTV_Seoul = pd.read_csv('../data/01. CCTV_in_Seoul.csv',  encoding='utf-8')
CCTV_Seoul.head()

- csv 파일을 pandas dataframe 으로 읽기 위해 read_csv() 함수를 사용함

- csv 구분자는 sep=구분자 옵션을 넣어서 구분자가 다른 경우도 읽기 가능

- quotechar = '"'

doc = pd.read_csv("sample.csv", encoding='utf-8-sig', quotechar=',')

- 에러 나는 데이터는 항상 있을 수 있음, 해당 데이터는 생략하는 것이 일반적임

doc = pd.read_csv("sample.csv", encoding='utf-8-sig', error_bad_lines=False)

 

Step 2. DataFrame 인덱싱하며 데이터 다루기

저 나름대로 데이터프레임 인덱싱하는 방법에 대해서

정리해 보았습니다.

제 뇌피셜이기 때문에 이해가 안되는 부분은 넘어가면서 확인하세요

df.index[int] , df.columns[int], df.values[int][int] integer로만 인덱싱/슬라이싱 가능하다

df[string] 열string으로 인덱싱이 가능하다. 복수는 df[[string,string,...]]

df[int:int] 행을 슬라이싱만 가능하다.

ex) df[0:1] 0번 index행 출력

loc[행의 조건, 열의 조건] # 행 조건은 비워두면 안된다.

loc[ : , : ] 행 전체 열 전체 # 슬라이싱은 :(콜론)으로 지정

loc[ df['x'] == y ] # 컬럼 'x'가 y인 행 조건 , 열 조건 default = 열전체

loc[index, column]

loc[ [지정 인덱스들 ], [지정 컬럼들]] # 리스트로 묶어서 ,(콤마로 구분)

loc[ 특정 행 및 열 ] = 특정값 # = (대입연산자) 이용하여 추가, 생성 가능

ex) df.loc['행'] = [ 각 컬럼 value값들 ] <-> df['컬럼'] = [각 행 value값들]

iloc[인덱스 넘버, 컬럼 넘버] # loc와 동일하게

iloc[행의 조건, 열의 조건] # 행 조건은 비워두면 안된다.

iloc[: , :] 행과 열 모두 integer로 인덱싱/슬라이싱 가능하다.

iloc[ [지정 인덱스들], [지정 컬럼들]] # 리스트로 묶어서 ,(콤마로 구분)

 

Step 3 matplotlib으로 그래프 그리기

1장 학습에서 가장 흥미로웠던 점은 아래 부분이었다.

머신러닝을 공부하면서 배웠던 선형회귀(polynomial Regression)를

넘파이를 통해 분석해서 나타냈다는 점이 가장 흥미로웠다. 

fp1 = np.polyfit(data_result['인구수'], data_result['소계'], 1)

f1 = np.poly1d(fp1)

fx = np.linspace(100000, 700000, 100)

data_result['오차'] = np.abs(data_result['소계'] - f1(data_result['인구수']))

df_sort = data_result.sort_values(by='오차', ascending=False)

df_sort.head()

아래는 그래프를 그리는데 이용하는 시각화 요소들의 스타일이다.

Marker Description

'o' Circle
'*' Star
'.' Point
',' Pixel
'x' X
'X' X (filled)
'+' Plus
'P' Plus (filled)
's' Square
'D' Diamond
'd' Diamond (thin)
'p' Pentagon
'H' Hexagon
'h' Hexagon
'v' Triangle Down
'^' Triangle Up
'<' Triangle Left
'>' Triangle Right
'1' Tri Down
'2' Tri Up
'3' Tri Left
'4' Tri Right
'|' Vline
'_' Hline
Line Syntax Description

'-' Solid line
':' Dotted line
'--' Dashed line
'-.' Dashed/dotted line
Color Syntax Description

'r' Red
'g' Green
'b' Blue
'c' Cyan
'm' Magenta
'y' Yellow
'k' Black
'w' White
반응형