오늘 한줄 요약
- 내가 입력한 대로 그래프가 그려지는게 신기하고 재미있다..!! 하지만, 가끔 튀어나오는 error를 바로 해결하지 못할 때 무척...당황스럽다..😱
0. 시작 전 설정
📌
import matplotlib.pyplot as plt
import matplotlib as mpl
plt.rcParams["axes.unicode_minus"] = False
from matplotlib import rc
rc("font", family="Malgun Gothic")
get_ipython().run_line_magic("matplotlib", "inline")
![](https://velog.velcdn.com/images/jaam_mini/post/3217e7a0-935c-472e-bb8d-4efd9b9327dd/image.png)
1. 데이터 훑어보기
■ CCTV_Seoul 데이터
.head(), .tail() : 데이터 보기
- 상위 5개의 데이터 확인
![](https://velog.velcdn.com/images/jaam_mini/post/84651b12-73c0-4b0b-8921-9c130e15a616/image.png)
- 하위 5개의 데이터 확인
![](https://velog.velcdn.com/images/jaam_mini/post/bcbc6e7b-35de-4950-a42f-8cd014a68afd/image.png)
.sort_values() : '특정 컬럼' 만 보기
- .sort_values(by="소계")
![](https://velog.velcdn.com/images/jaam_mini/post/7b14c3af-7ee1-4ae3-b872-fddbac1713aa/image.png)
파일명[추가컬럼] = () : 컬럼 추가/기존 수정
ascending=True : 내림차순 상위 5개 보기
- ascending=False (내림차순)
- ascending=True (오름차순)
![](https://velog.velcdn.com/images/jaam_mini/post/c4f78865-0f15-4c4b-8b66-2468a80f420c/image.png)
■ pop_Seoul 데이터
.head() : 데이터 보기
![](https://velog.velcdn.com/images/jaam_mini/post/a2440335-a3a9-4d02-ac8b-ae6f6cf26412/image.png)
.drop() : [0]번 컬럼 삭제
- drop([0], axis=0, inplace=True)
- drop(삭제 컬럼, 가로줄, 저장)
- axis=0(가로), axis=1(세로)
![](https://velog.velcdn.com/images/jaam_mini/post/358d7ab8-a04a-43fd-a9be-d732d341d57c/image.png)
.unique() : 데이터 확인 (중복 X)
![](https://velog.velcdn.com/images/jaam_mini/post/6401bca8-3ba2-4638-9dc7-42a83d0a5efd/image.png)
len() : 데이터 수 확인
![](https://velog.velcdn.com/images/jaam_mini/post/0272e356-b967-4810-8e6e-7e90ebd21cbd/image.png)
파일명[추가컬럼] = () : 컬럼 추가/기존 수정
![](https://velog.velcdn.com/images/jaam_mini/post/e43d0c5e-4dee-4112-bc0e-7cc768b179cf/image.png)
.sort_values([""], ascending=False).head() : 특정컬럼 내림차순 확인
- ascending=False (내림차순)
- ascending=True (오름차순)
![](https://velog.velcdn.com/images/jaam_mini/post/69c392db-2797-4229-8187-20991d114d04/image.png)
2. Pandas 데이터 합치기
데이터 만들기
![](https://velog.velcdn.com/images/jaam_mini/post/84681530-7d7c-4037-a104-f4709354c72b/image.png)
pd.merge() : 합치기
- ⭐
pd.merge(A, B, how="inner", on="G")
: A+B를 G를 기준으로 합친다
- 두 데이터 프레임에서 컬럼이나 인덱스를 기준으로 잡고 병합하는 방법
- 기준이 되는 컬럼이나 인덱스를 키값이라고 한다
- 기준이 되는 키 값은 두 데이터 프레임에 모두 포함되어 있어야 한다
how="inner" : 합친 그래프 > 교집합 출력
- pd.merge(left, right, 📌
how="inner"
, on="key")
- how="inner" : '교집합', 동일한 값만 출력
![](https://velog.velcdn.com/images/jaam_mini/post/4837742f-cbd4-45ce-8f21-b6adc78f12de/image.png)
how="outer" : 합친 그래프 > 모든 값 출력(NaN)
- pd.merge(left, right, 📌
how="outer"
, on="key")
- how="outer" : 모든 값을 출력 (A, B 모두 살린다)
- 모두 출력 시 없는 값의 경우 'NaN'으로 출력
![](https://velog.velcdn.com/images/jaam_mini/post/759afcc0-590d-41b8-a31c-37c67bf1a2af/image.png)
how="A", on="key" : A그래프 값 모두 보존, key 값 기준
- how="left" : 왼쪽의 데이터를 모두 보존
![](https://velog.velcdn.com/images/jaam_mini/post/bf707ee4-569b-40f3-8c1c-b851cbcc9552/image.png)
pd.merge(on="A") : A인덱스로 데이터를 합침
- CCTV_Seoul, pop_Seoul 데이터를
- on="구별" 인덱스를 기준으로 합쳐서 정렬
![](https://velog.velcdn.com/images/jaam_mini/post/7213a9c5-b31b-4e4c-9b11-ab5f141d7eac/image.png)
del 파일명[삭제값] : 컬럼 삭제
파일명.drop([삭제값], axis=0/1, inplace=True) : 컬럼 삭제
- data_result.삭제(2015. 2016 데이터, 세로값(가로:axis=0),객체들 저장)
![](https://velog.velcdn.com/images/jaam_mini/post/f7eb930b-4006-41d7-b377-fbdf07ac6fba/image.png)
set_index() : index로 지정
- 선택한 컬럼을 데이터 프레임의 인덱스로 지정
![](https://velog.velcdn.com/images/jaam_mini/post/ca08befa-a998-4572-9090-dcc6a0f79f88/image.png)
파일명.corr() : 상관계수 확인
- corr() : correlation의 약자
- 상관계수가 0.2 이상인 데이터를 비교
![](https://velog.velcdn.com/images/jaam_mini/post/8eebb29b-c4da-462b-a6c9-e93cfeed974b/image.png)
파일명.info() : 데이터 타입 확인
'비율' 컬럼 만들기
'비율' 기준 내림차순 정렬
3. Matplotlib
[📌이전 자료 참고] : https://velog.io/@jaam_mini/EDA-matplotlib-Seaborn-기초
4.데이터 시각화 (그래프로 표현하기)
.head() : 데이터 확인
![](https://velog.velcdn.com/images/jaam_mini/post/f2d0475c-d463-4a17-b8db-5324e4cfd60d/image.png)
특정 'A'컬럼 시각화
data_result["소계"].plot(kind="barh", grid=False, figsize=(8,8));
![](https://velog.velcdn.com/images/jaam_mini/post/255973d1-8561-4fdc-8eed-6e4fbecaf43f/image.png)
B[A].sort_values().plot() : B데이터의 'A'컬럼 "내림차순" 시각화
data_result["소계"].sort_values().plot(kind="barh", grid=False, figsize=(8,8));
![](https://velog.velcdn.com/images/jaam_mini/post/a0fd7db6-b84c-48e6-9fca-0804f23d6a7a/image.png)
def 그래프 함수 ⭐
def drawGraph():
data_result["소계"].sort_values().plot(
kind="barh", grid=False, figsize=(10,10));
drawGraph()
![](https://velog.velcdn.com/images/jaam_mini/post/1fcc3191-5414-40c9-ac9d-4e4856ebfcdb/image.png)
title="" : 제목 붙이기
def drawGraph():
data_result["소계"].sort_values().plot(
kind="barh", grid=False, title="가장 CCTV가 많은 구", figsize=(7,7));
drawGraph()
![](https://velog.velcdn.com/images/jaam_mini/post/ab463385-65b3-48f9-b184-3c1240b8df03/image.png)
B[A].sort_values().plot() : B데이터의 'A'컬럼 "내림차순" 시각화
def drawGraph():
data_result["CCTV비율"].sort_values().plot(
kind="barh", grid=False, title="CCTV비율 - 가장 CCTV가 많은 구", figsize=(10,10));
drawGraph()
![](https://velog.velcdn.com/images/jaam_mini/post/c0ee82c8-11bd-4843-9a87-76f790ec5968/image.png)
5.데이터 경향 파악
.head()
![](https://velog.velcdn.com/images/jaam_mini/post/34e26e2e-52e5-477b-bfdd-a4fce1f56acc/image.png)
plt.scatter() : 점 그래프
def drawGraph():
plt.figure(figsize=(14,10))
plt.scatter(data_result["인구수"], data_result["소계"], s=50)
plt.xlabel("인구수")
plt.ylabel("CCTV")
plt. grid(True)
plt.show()
drawGraph()
![](https://velog.velcdn.com/images/jaam_mini/post/d9440c89-507c-47b2-9ef7-92ff7f0b7dcd/image.png)
Numpy를 이용한 1차 직선
- np.polyfit() : 직선을 구성하기 위한 계수를 계산해주는 기능
- np.poly1d() : np.polyfit()로 찾은 계수를 파이썬에서 사용할 수 있는 함수로 바꿔주는 기능
![](https://velog.velcdn.com/images/jaam_mini/post/1a855db7-a257-489f-b9bb-1ccdb8014c6a/image.png)
![](https://velog.velcdn.com/images/jaam_mini/post/2a848327-4f94-4a75-8a71-21d6f7c3d719/image.png)
![](https://velog.velcdn.com/images/jaam_mini/post/6db7c883-31ff-4d08-93e6-b3682b9399c2/image.png)
제로베이스 데이터 스쿨
데일리 학습 노트