시각화 matplotlib] "barh 내림차순 정렬" plt.barh, transpose, sort_values

 

print('='*100)
print('원본 데이터')
print('='*100)
Cost_Guard_reason_2017 = Cost_Guard_reason.iloc[[2],:].drop('연도', axis = 1)
display(Cost_Guard_reason_2017)

print('='*100)
print('transpose를 진행한다.')
print('='*100)
Cost_Guard_reason_2017_trans = Cost_Guard_reason_2017.transpose()
display(Cost_Guard_reason_2017_trans)

print('='*100)
print('오름차순 정렬을 진행한다.')
print('='*100)
Cost_Guard_reason_2017_trans_sorted = Cost_Guard_reason_2017_trans.sort_values(by=2, ascending = True)
display(Cost_Guard_reason_2017_trans_sorted)

 

 

plt.barh(y = Cost_Guard_reason_2017_trans_sorted.index, width = Cost_Guard_reason_2017_trans_sorted[2].values)

시각화 matplotlib] plt.bar, plt.barh

 

plt.bar

 

import matplotlib.pyplot as plt
%config InlineBackend.figure_format='retina'

plt.figure(figsize=(6,4))
plt.bar(x=tmp['AgeGrp'], height=tmp['Survived'])
plt.xlabel('AgeGrp')
plt.ylabel('Survived')
plt.ylim(0,1)
plt.show()

 

 

plt.bar, plt.xticks(rotation = 숫자)

 

plt.figure(figsize = [20,15])
plt.bar(x = df_participate['월별'], height = df_participate['참가자 수'])
plt.xticks(rotation =45 )
plt.show()

 

plt.barh

 

gongong

 

 

import pandas as pd
import matplotlib.pyplot as plt
gongong = pd.read_csv('한국건강가정진흥원_다문화가족 이중언어코치 지역별 현황_20220831.csv', encoding = 'CP949')

# 한글 폰트를 설정하자
plt.rc('font', family='Malgun Gothic') # For Windows
plt.rc('axes', unicode_minus=False)
plt.rcParams['font.family']

# 인덱스가 한글이기 때문에 가로 막대로 출력하는 것이 더 가시적이다.
plt.barh(y=gongong['지역'].astype(str), width = gongong['합계 : 이중언어코치 인원(명)'], color = ['C4'], alpha = 0.7, 
         label = ' 인원(명)')
plt.xticks(list(range(0,21,2)))
plt.title('이중언어코치의 수')


plt.legend()
plt.show()

 

 

시각화 matplotlib, seaborn 범주형] countplot, bar chart, pie chart

 

seaborn countplot

 

# sns.countplot(x=titanic['Pclass'])
sns.countplot(x='Pclass', data=titanic)
# sns.countplot(y='Pclass', data=titanic)
plt.grid()
plt.show()

 

막대 그래프 시각화, plot(kind='bar')

train.groupby('Pclass').mean()['Survived'].plot(kind='bar')

 

 

pie chart

 

plt.pie(temp.values, labels = temp.index, autopct = '%.2f%%',
        startangle=90, counterclock=False,
        explode = [0.05, 0.05, 0.05], shadow=True)
plt.show()

 

 

기본 차트 그리기 plt.plot(1차원 값)

 

 

# 차트 그리기
plt.plot(data['Temp'])

# 화면에 보여주기
plt.show()

 

x축, y축 지정하고 그래프 그리기

 

import pandas as pd
import matplotlib.pyplot as plt
plt.rc('font', family = 'Malgun Gothic')
plt.rcParams['font.family']

plt.plot(df['timestamp'], df['price(원/kg)])
plt.xticks(rotation=70)

plt.ylabel('price(원/kg)')
plt.show()

 

# 방법 2
plt.plot('Date', 'Temp', data = data)
plt.show()

 

 

시각화 axhline

train.groupby('hour').mean()['hour_bef_temperature'].plot()
plt.axhline(train.groupby('hour').mean()['hour_bef_temperature'].mean())

 

차트 꾸미기

plt.plot(data['Date'], data['Ozone'])

plt.xticks(rotation = 30)       # x축 값 꾸미기 : 방향을 30도 틀어서
plt.xlabel('Date')              # x축 이름 지정
plt.ylabel('Ozone')             # y축 이름 지정
plt.title('Daily Airquality')   # 타이틀

plt.show()

 

 

라인스타일 조정

 

plt.plot(data['Date'], data['Ozone']
         ,color='green'                # 칼러
         , linestyle='dotted'          # 라인스타일
         , marker='o')                 # 값 마커(모양)

plt.xlabel('Date') 
plt.ylabel('Ozone')
plt.title('Daily Airquality')
plt.xticks(rotation=45)

plt.show()

 

 

그래프 겹쳐서 그리기

 

# 첫번째 그래프
plt.plot(data['Date'], data['Ozone'], color='green', linestyle='dotted', marker='o')
# 두번째 그래프
plt.plot(data['Date'], data['Temp'], color='r', linestyle='-', marker='s')

plt.xlabel('Date') 
plt.ylabel('Ozone')
plt.title('Daily Airquality')
plt.xticks(rotation=45)

# 위 그래프와 설정 한꺼번에 보여주기
plt.show()

 

 

범례, 그리드 추가

 

plt.plot(data['Date'], data['Ozone'], label = 'Ozone')  # label = : 범례추가를 위한 레이블값
plt.plot(data['Date'], data['Temp'], label = 'Temp')

plt.legend(loc = 'upper right')    # 레이블 표시하기. loc = : 위치
plt.grid()
plt.xticks(rotation=45)
plt.show()

 

 

여러 개 차트 그리기, 방식 2

 

data.plot(x = 'Date', y = ['Temp','Ozone']
          , title = 'Daily Airquality')
plt.grid()
plt.show()

 

 

축 범위 조정

 

plt.plot(data['Ozone'])

# plt.ylim(0, 100)
# plt.xlim(0, 10)
plt.grid()
plt.show()

 

 

그래프 수직선, 수평선 추가

 

plt.plot(data['Ozone'])

plt.axhline(40, color = 'grey', linestyle = '--')
plt.axvline(10, color = 'red', linestyle = '--')
plt.show()

 

 

 

그래프에 텍스트 추가

 

plt.plot(data['Ozone'])

plt.axhline(40, color = 'grey', linestyle = '--')
plt.axvline(10, color = 'red', linestyle = '--')

plt.text(5, 41, '40')
plt.text(10.1, 20, '10')

plt.show()

 

 

여러 그래프 나눠서 그리기

 

plt.figure(figsize = (12,8))
plt.subplot(3,1,1)
plt.plot('Date', 'Temp', data = data)
plt.grid()

plt.subplot(3,1,2)
plt.plot('Date', 'Wind', data = data)

plt.subplot(3,1,3)
plt.plot('Date', 'Ozone', data = data)
plt.grid()
plt.ylabel('Ozone')

plt.tight_layout() # 그래프간 간격을 적절히 맞추기
plt.show()

 

 

 

 

하나의 데이터프레임에서 여러 개의 차트 그리기

 

# 남녀 인구 변화
plt.plot(pop_test[['male','female']])
plt.show()

 

한글 입력, 경고문구 무시, 경로, 목록

import matplotlib.pyplot as plt

plt.rc('font', family = 'Malgun Gothic')
plt.rcParams['font.family']

 

import warnings
warnings.filterwarnings(action='ignore')

 

import os
os.getcwd()
os.listdir()

 

crosstab

pd.crosstab([output['clust']], output['상품타입'],margins=True)

 

시각화 matplotlib] "hist, boxplot, plot 그리기", kind='bar', legend(loc='center'), ylabel, grid

 

데이터프레임.plt( kind = 'bar' ) 이용

# 모델별 결과 시각화
# pandas의 plot 함수을 사용하여 AI모델 별 accuracy_score, f1_score 수직 그래프 시각화 합니다.
# grid를 추가해 주세요.
# legend를 표시하고, 위치는 center 입니다.
import matplotlib.pyplot as plt
result_comp.plot(kind= 'bar')
plt.legend(loc= 'center'  )
plt.grid()
plt.show()

 

시각화 matplotlib  
* 히스토그램 작성

plt.hist(데이터프레임.컬럼명, bins = 숫자, edgecolor = '색상명')


plt.title('제목')


plt.ylabel('y 라벨명')


plt.show()
Boxplot 그리기

plot.boxplot(데이터프레임['컬럼명'])


옆으로 그리려면,


plt.boxplot(데이터프레임['컬럼명'], vert=False)

plt.grid()


plt.show()


plot 차트 이용

plt.plot(데이터프레임['컬럼명'])
plot 차트 점 찍기

plt.figure( figsize= (20,3))
plt.plot(acc['accuracy_score'], marker ='.' )
plt.xlabel('train_features')
plt.ylabel('accuracy')
plt.grid()
plt.show()

 

내용

  • 산포도
  • pairplot을 통한 시각화
  • jointplot
  • regplot 이용

 

1. 산포도

sns.scatterplot(x='컬럼명1', y='컬럼명2', data=데이터프레임)

 

 

2. pairplot을 통한 시각화

* 숫자형 변수들에 대한 산점도를 한꺼번에 그린다.

sns.pairplot(데이터프레임, kind = 'reg')

plt.show()

3. jointplot

sns.jointplot(x='컬럼명1', y='컬럼명2', data = 데이터프레임)

plt.show()

 

4. regplot 이용

sns.replot(x='컬럼명1', y='컬럼명2', data=데이터프레임)

plt.show()

 

 

내용

  • countplot 이용
  • 기초 통계량 산출 value_counts() $ value_counts(normalize = True)

 

1. countplot 이용

sns.countplot(y='컬럼명', data = 데이터프레임명)

plt.grid()

plt.show()

 

가로로 그리려면,

sns.countplot(x='컬럼명', data=데이터프레임)

 

 

2. 기초 통계량 산출 value_counts() $ value_counts(normalize = True)

데이터프레임['컬럼명'].value_counts()

데이터프레임['컬럼명'].value_counts(normalize=True)

 

 

3. pie chart 이용

plt.pie( 데이터프레임['컬럼명'].values, labels = 데이터프레임['컬럼명'].index(), autopct = '%.2f%%' )



plt.pie( 데이터프레임['컬럼명'].vauels, labels = 데이터프레임['컬럼명'].index(), autopct = '%.2f%%', startangle = 90, counterclock=False)



pt.pie( 데이터프레임['컬럼명'].values, labels = 데이터프레임['컬럼명'].index(), autopct = '%.2f%%', startangle = 90, counterclock = False, explode = [0.05, 0.05, 0.05],  shadow = True )

내용

  • 평균 : numpy , pandas
  • Maplotlib 시각화 : 히스토그램, 박스플랏, plot
  • seaborn : kde 밀도함수, 히스토그램 + kde 밀도 함수 한 번에 그리기, 하나의 그래프에 두 개의 kde

 

평균(산술평균)

 

1. 넘파이 함수 이용

np.mean(데이터프레임['컬럼명'])

 

2. 판다스 mean 메서드 이용

데이터프레임['컬럼명'].mean()

 

히스토그램 작성

plt.hist(데이터프레임.컬럼명, bins = 숫자, edgecolor = '색상명')

plt.title('제목')

plt.ylabel('y 라벨명')

plt.show()

 

 

Boxplot 그리기

plot.boxplot(데이터프레임['컬럼명'])

옆으로 그리려면,

plt.boxplot(데이터프레임['컬럼명'], vert=False)

plt.grid()

plt.show()

 

plot 차트 이용

plt.plot(데이터프레임['컬럼명'])

 

 

밀도함수 그리기 <kdeplot>

sns.kdeplot(데이터프레임['컬럼명'])

plt.show()

 

히스토그램 + 밀도함수 합쳐서 그리기 <hisplot+kde></hisplot+kde>

sns.hisplot(데이터프레임['컬럼명'], ked=True)

 

하나의 그래프에 두 개의 밀도함수그래프 그리기 <kde+kde>

sns.kdeplot(x='컬럼명'1, data = 데이터프레임, label = '라벨이름')

sns.kdeplot(x='컬럼명2, data = 데이터프레임, label = '라벨이름')

plt.legend()

plt.gride()

plt.show()

 

Pandas Profiling 활용

 

import pandas as pd
import numpy as np

import pandas_profiling

from pandas_profiling import ProfileReport

h = pd.read_csv('housing_data.csv')

h.profile_report()

 

 

원본 데이터

+ Recent posts