티스토리 뷰

반응형
import pandas as pd
import matplotlib.pyplot as plt

plt.rc('font',family='Malgun Gothic')
plt.rcParams['axes.unicode_minus']=False
df1=pd.DataFrame({'요일':['월','화','수','목','금','토','일'],
'매출액':[10000,9000,11000,8000,13000,15000,14000]})
df2=pd.DataFrame({'요일':['월','화','수','목','금','토','일'],
'매출액':[9000,9500,13000,7000,12000,14000,11000]})

 

막대그래프

plt.bar(x,y)

plt.barh(x,y)

plt.barh(df1['요일'],df1['매출액'])

 

막대 폭 지정

width를 지정하면 된다

 

plt.bar(df1['요일'],df1['매출액'],width=1)

 

세로막대에선 height를 지정한다.

 

막대색상 지정

color= 를 한다

plt.bar(df1['요일'],df1['매출액'],color='r')

 

각각 색상 다르게 지정하기

 

plt.bar(df1['요일'],df1['매출액'],color=['r','orange','y','g','b','navy','violet'])

막대 테두리 설정

edgecolor=테두리 색상

linewidth= 테두리 두께

hatch=내부 채우기

 

plt.bar(df1['요일'],df1['매출액'],color=['r','orange','y','g','b','navy','violet'],
edgecolor='gray',linewidth=2)

 

막대마다 다른 패턴

객체로 막대 받기

set_hatch(기호)

 

bars=plt.bar(df1['요일'],df1['매출액'],color=['r','orange','y','g','b','navy','violet'],
edgecolor='gray',linewidth=2,hatch='/')

bars[0].set_hatch('.')
bars[1].set_hatch('/')
bars[2].set_hatch('+')
bars[3].set_hatch('-')
bars[4].set_hatch('*')
bars[5].set_hatch(':')
bars[6].set_hatch('o')

 

막대 위치 지정

 

plt.bar(df1['요일'],df1['매출액'],width=0.4)
plt.bar(df2['요일'],df2['매출액'],width=0.4)

 

값이 겹쳐서 보이는 것이 디폴트이다.

 

plt.bar(df1['요일'],df1['매출액'],width=0.4,align='edge')
plt.bar(df2['요일'],df2['매출액'],width=0.4)

 

 

스캐터 플롯

 

x=[1,5,6,9,10]
y=[1,5,3,9,7]
plt.scatter(x,y)

크기는 s, 색은 c로 표시

 

크기 변경

plt.scatter(x,y,s=[100,200,50,80,30])

 

색상지정

plt.scatter(x,y,s=[100,200,50,80,30],c=['r','b','g','k','y'])

 

 

컬러캡 지정

cmap=컬러맵

컬러바 표시 plt.colorbar()

plt.scatter(x,y,c=y)
plt.colorbar()

젤 큰 값이 노랑, 작은것이 보라색

 

 

데이터로 분석해보기

import seaborn as sns
tips=sns.load_dataset('tips')
tips.head()
#지불금액이 크면 팁도 많이 주는가?
plt.scatter(tips['total_bill'],tips['tip'])
plt.show()

#지불금액이 크면 팁도 많이 주는가?
plt.scatter(tips['total_bill'],tips['tip'],s=tips['size']*50,alpha=0.5)
plt.show()

많이 앉는 테이블일수록 많이 쓴지 본다.

 

 

남자가 계산했는지 여자가 계산했는지 알아보기

def set_color(x):
    if x=='Male':
        return 'blue'
    elif x=='Female':
        return 'red'
tips['color']=tips['sex'].apply(set_color)
plt.scatter(tips['total_bill'],tips['tip'],s=tips['size']*50,alpha=0.5,
c=tips['color'])
plt.show()

 

 

히트맵

plt.pcolor(2차원데이터)

import numpy as np
arr=np.random.standard_normal((5,5))
df=pd.DataFrame(arr)
df

 

plt.pcolor(df)
plt.colorbar()

 

plt.pcolor(df,cmap='Blues')
plt.colorbar()

import seaborn as sns
titanic = sns.load_dataset('titanic')
titanic
titanic.isnull().sum()

survived 0 pclass 0 sex 0 age 177 sibsp 0 parch 0 fare 0 embarked 2 class 0 who 0 adult_male 0 deck 688 embark_town 2 alive 0 alone 0 dtype: int64

 

결측치 행 제거

titanic=titanic.drop(columns=['deck'])
titanic=titanic.dropna()

 

연령대별 테이블 만들기

titanic['agerange']=(titanic['age']/10).astype('int')*10
titanic.pivot_table(index='class',columns='agerange',values='survived',aggfunc='count')

히트맵 만들기

plt.pcolor(titanic_pivot)
plt.colorbar()

plt.xticks(np.arange(0.5,len(titanic_pivot.columns),1),labels=titanic_pivot.columns)
plt.yticks(np.arange(0.5,len(titanic_pivot.index),1),labels=titanic_pivot.index)

 

seaborn으로 그리기

heatmap(date=이차원데이터)

cmap=컬러캡

annot=True 수치표시

fmt='d 정수로표시

 

sns.heatmap(titanic_pivot,cmap='Blues',annot=True,fmt='d')

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/06   »
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
글 보관함
반응형