반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 조코딩
- pandas
- 크롤링
- FirebaseV9
- 강화학습
- clone coding
- 정치인
- kaggle
- 클론코딩
- Instagrame clone
- expo
- JavaScript
- 데이터분석
- Ros
- ReactNative
- 카트폴
- coding
- 강화학습 기초
- 리액트네이티브
- redux
- 앱개발
- 머신러닝
- App
- TeachagleMachine
- React
- 전국국밥
- python
- 딥러닝
- 사이드프로젝트
- selenium
Archives
- Today
- Total
qcoding
[데이터분석정리_2] 그래프 그리기 본문
반응형
## 파이썬을 통해 그릴 수 있는 그래프를 확인해보자.
https://github.com/youngwoos/Doit_Python/tree/main/Data
1) 산점도 - 변수 간 관계 표현하기
import pandas as pd
import numpy as np
import seanborn as sns
df=pd.read_csv('./mpg.csv')
df
# x축 displ , y축은 hwy를 나타낸 산점도 만들기
sns.scatterplot(data=df,x='displ' , y='hwy' ,hue='drv')\
.set( xlim=(3,6) , ylim= (10,30))
### 그래프 설정 바꾸기
import matplotlib.pyplot as plt
## 해상도, 기본값 72
plt.rcParams.update({'figure.dpi' : '150'})
## 가로,세로,크기, 기본값 [6,4]
plt.rcParams.update({'figure.figsize' : [8,6]})
##글자,크기,기본값 10
plt.rcParams.update({'font.size' : '15'})
## 폰트, 기본값 sans-serif
plt.rcParams.update({'font.family' : 'Malgun Gothic'})
## 한번에 설정
plt.rcParams.update({
'figure.dpi' : '150' ,
'figure.figsize' : [8,6],
'font.size' : '15',
'font.family' : 'Malgun Gothic'
})
##모든설정 되돌리기
plt.rcParams.update(plt.rcParamsDefault)
#설명메시지 숨시기 <AxesSubplot ... > 숨기기
# 뒤에 ; 입력
sns.scatterplot(data=df,x='displ' , y='hwy' ,hue='drv')\
.set( xlim=(3,6) , ylim= (10,30));
2) 막대 그래프 - 집단 간 차이 표현하기
# mpg 데이터를 이용해 drv별 hwy 평균을 나타낸 막대그래프 만들기
# 평균막대그래프 만들기 -> 평균값 크기를 막대길이로 표현한 그래프 barplot
2-1) 집단별 평균표 만들기
## 집단별 평균표 만들기
df_mpg=df.groupby('drv', as_index=False).agg(mean_hwy=('hwy','mean')).sort_values('mean_hwy',ascending=False)
df_mpg
2-2) 그래프 만들기
sns.barplot(data=df_mpg,x='drv',y='mean_hwy');
# 빈도막대그래프 만들기 -> 빈도(개수)를 막대길이로 표현. countplot()
1) 집단별 빈도표 --> barplot 사용방법
#빈도 표만들기
df_mpg=df.groupby('drv',as_index=False).agg(count_drv=('drv','count'))
# barplot 그래프
sns.barplot(data=df_mpg,x='drv',y='count_drv')
2) countplot() 사용방법
##빈도수가 높은 index순서를 구함
df['drv'].value_counts().index
#countplot으로 빈도 그래프 그리기
sns.countplot(data=df,x='drv' , order=df['drv'].value_counts().index)
3) 선 그래프 - 시간에 따라 달라지는 데이터 표현하기
-> 시간에 따라 달라지는 데이터를 표현할 때 선 그래프 사용
ex) 활율, 주가지수 등 경제지표 - 시계열 데이터 (time series data)
# 미국의 경제지표 데이터 불러오기
df=pd.read_csv('./economics.csv')
df
# 기본 선그래프 그리기
sns.lineplot(data=df,x='date',y='unemploy')
## date의 타입이 object 이므로 날짜 시간타입 (datetime)의 형태로 변경한다
## 날짜 시간 타입 변수 만들기
df['date2']=pd.to_datetime(df['date'])
df.info()
# 연추출
df['date2'].dt.year
# 월추출
df['date2'].dt.month
# 일추출
df['date2'].dt.day
#연도변수추가
df['year']=df['date2'].dt.year
df.head()
## x축에 연도표시하기
# ci는 신뢰구간 (confidence interval)
sns.lineplot(data=df,x='year',y='unemploy' , ci=None)
5) 상자그림 - 집단 간 분포 차이 표현하기
-> bos plot은 데이터의 분포 또는 퍼져있는 형태를 직사각형 상자 모양으로 표현한 그래프입니다. 상자 그림을 보면 데이터가 어떻게 분포하고 있는지 알수 있기 때문에 평균값만 볼때봐 데이터의 특징을 더 자세히 이해할 수 있습니다.
상자그림 | 값 | 설명 |
상자 아래 세로선 | 아랫수염 | 하위 0~25% 내에 해당하는 값 |
상자 밑면 | 1사분위수(Q1) | 하위 25% 위치 값 |
상자 내 굵은 선 | 2사분위수 (Q2) | 하위 50% 위치 값 (중앙값) |
상자 윗면 | 3사분위수(Q3) | 하위 75% 위치 값 |
상자 세로선 | 윗수염 | 하위 75~100% 내에 해당하는 값 |
상자 밖 가로선 | 극단치 경계 | Q1 , Q3 밖 1.5 IQR내 최대값 |
상자 밖 점 표식 | 극단치 | Q,Q3 밖 1.5 IQR 벗어난 값 |
* IQR(사분위 범위) 1사분위수와 3사분위수의 거리를 뜻하고, 1.5IQR은 IQR의 1.5배를 뜻합니다.
6) Group by 사용하여 산점도 그래프 범주별로 색 다르게 나타내기
## group by 사용
fig , ax = plt.subplots()
fig.set_size_inches(11,5)
group=visual_data.groupby('Type',as_index=False)
color = {'Free' : 'red' , 'Paid' : 'green'}
for label, item in group:
plt.scatter(
x=item['Rating'],
y=np.log10(item['Reviews']),
c=color[label],
label=label
)
plt.title('Rating VS Reviews', fontsize=25)
plt.xlabel('Rating', fontsize=20)
plt.ylabel('Reviews', fontsize=20)
plt.legend()
반응형
'Python 데이터분석' 카테고리의 다른 글
[데이터분석실습]기사 댓글 텍스트 마이닝 (0) | 2022.06.27 |
---|---|
[데이터분석실습]텍스트 마이닝_대통령 연설문 분석 (0) | 2022.06.26 |
[데이터분석_정리_1]query() / sort_values() / assign() / groupby() / agg() / merge() / concat() (0) | 2022.06.21 |
[데이터분석실습]mpg 데이터를 통한 분석 (query 사용법 / query 변수 / query in) (0) | 2022.06.19 |
[데이터분석실습] 미국 동북중부_midwest 정보 확인 (np.where / value_counts / sort_index) (0) | 2022.06.19 |
Comments