[5주차] EDA

xktm-woonge·2023년 6월 4일
post-thumbnail

Seaborn

시각화

기초예제1

import matplotlib.pyplot as plt
import seaborn as sns
from matplotlib import rc

plt.rcParams['axes.unicode_minus'] = False
plt.rc('font', family='Malgun Gothic')
get_ipython().run_line_magic('matplotlib', 'inline')

x =  np.linspace(0, 14, 100)
y1 = np.sin(x)
y2 = 2 * np.sin(x + 0.5)
y3 = 3 * np.sin(x + 1.0)
y4 = 4 * np.sin(x + 1.5)

sns.set_style('whitegrid')
plt.figure(figsize=(10, 6))
plt.grid(True)
plt.plot(x,y1,x,y2,x,y3,x,y4)
plt.show()

boxplot

tips = sns.load_dataset('tips')
tips

# hue : 카테고리 데이터

plt.figure(figsize=(6, 6))
sns.boxplot(x='day', y='total_bill', data=tips, hue='smoker', palette='Set2') #  Set 1 -3
plt.show()

swarmplot

plt.figure(figsize=(6, 6))
sns.swarmplot(x='day', y='total_bill', data=tips, hue='smoker', palette='Set2') #  Set 1 -3
plt.show()

boxplot with swarmplot

plt.figure(figsize=(8, 6))
sns.boxplot(x='day', y='total_bill', data=tips)
sns.swarmplot(x='day', y='total_bill', data=tips, hue='smoker', palette='Set2') #  Set 1 -3
plt.show()

heatmap

flights = sns.load_dataset('flights')
flights.head()

plt.figure(figsize=(10,6))
sns.heatmap(data=flights, annot=True, fmt='d', cmap='YlGnBu')
plt.show()

pairplot

iris = sns.load_dataset('iris')

sns.set_style('ticks')
sns.pairplot(iris, hue='species')
plt.show()

# 원하는 컬럼
sns.pairplot(iris, x_vars=['sepal_width', 'sepal_length'],
            y_vars=['petal_width', 'petal_length'])

plt.show()

lmplot

anscombe = sns.load_dataset('anscombe')

sns.set_style('darkgrid')
sns.lmplot(x='x', y='y', data=anscombe.query("dataset == 'I'"), ci=None, height = 8) # ci 신뢰 구간
plt.show()

# order option

sns.set_style('darkgrid')
sns.lmplot(x='x', y='y', data=anscombe.query("dataset == 'I'"), 
           order = 2, ci=None, height = 8, scatter_kws={'s':80}) # ci 신뢰 구간
plt.show()

# outlier option

sns.set_style('darkgrid')
sns.lmplot(x='x', y='y', data=anscombe.query("dataset == 'III'"),robust=True, 
           order = 1, ci=None, height = 8, scatter_kws={'s':80}) # ci 신뢰 구간
plt.show()

folium

지도 시각화

folium.Map()

m = folium.Map(location=[37.544564958079896, 127.05582307754338], zoom_start=15)
m

tiles option

m = folium.Map(location=[37.544564958079896, 127.05582307754338], 
               zoom_start=15,
              tiles='Stamen Watercolor')
m

folium.Marker()

지도에 마커 설정

m = folium.Map(location=[37.544564958079896, 127.05582307754338], 
               zoom_start=15,
              tiles='OpenStreetMap')
# 뚝섬역
folium.Marker((37.54712311308356, 127.04721916917774)).add_to(m)

# 성수역
folium.Marker([37.544564958079896, 127.05582307754338],
             popup='Subway',
             tooltip='성수역').add_to(m)

folium.Marker([37.54558642069953, 127.05729705810472],
             popup='<a href="https://zero-base.co.kr/" target=_"blink">제로베이스</a>',
             tooltip='<i>Zerobase</i>').add_to(m)
m

folium.Icon()

m = folium.Map(location=[37.544564958079896, 127.05582307754338], 
               zoom_start=15,
              tiles='OpenStreetMap')
# icon basic
folium.Marker((37.54712311308356, 127.04721916917774), icon=folium.Icon(color='black',icon='info-sign')).add_to(m)

# 성수역
folium.Marker([37.544564958079896, 127.05582307754338],
             popup='Subway',
             tooltip='성수역',
             icon=folium.Icon(
             color='red',
             icon_color='pink',
             icon='cloud')).add_to(m)

folium.Marker([37.54558642069953, 127.05729705810472],
             popup='<a href="https://zero-base.co.kr/" target=_"blink">제로베이스</a>',
             tooltip='<i>Zerobase</i>').add_to(m)

folium.Marker([37.54035903907497, 127.06913328776446],
             popup='건대입구역',
             tooltip='Icon custom',
             icon=folium.Icon(
             color='purple',
             icon_color='green',
             icon='amazon',
             angle=50,
             prefix='fa')).add_to(m)
m

folium.ClickForMarker()

지도위에 마우스로 클릭했을 때 마커를 생성

m = folium.Map(location=[37.544564958079896, 127.05582307754338], 
               zoom_start=15,
              tiles='OpenStreetMap')

m.add_child(folium.ClickForMarker(popup='ClickForMarker'))

folium.LatLngPopup()

지도를 마우스로 클릭했을 때 위도와 경도

m = folium.Map(location=[37.544564958079896, 127.05582307754338], 
               zoom_start=15,
              tiles='OpenStreetMap')

m.add_child(folium.LatLngPopup())

folium.Circle(), folium.CircleMarker()

m = folium.Map(location=[37.5451, 127.0500], 
               zoom_start=15,
              tiles='OpenStreetMap')


#Circle
folium.Circle(
        location=[37.5555, 127.0437],
    radius=100,
    fill=True,
    color='green',
    fill_color='red',
    popup='Circle',
    tooltip='Circle'
).add_to(m)

#Circle Marker
folium.CircleMarker(
        location=[37.5436, 127.0447],
    radius=100,
    fill=True,
    color='green',
    fill_color='red',
    popup='Circle',
    tooltip='Circle'
).add_to(m)
m

folium.Chorolpeth

경계 표시

m = folium.Map([43, -102], zoom_start=3)

folium.Choropleth(
    geo_data='02. us-states.json', #경계선 좌표값이 담긴 데이터
    data=state_data, # Series or DataFrame
    columns=['State', 'Unemployment'], #DataFrame columns
    key_on='feature.id',
    fill_color='BuPu',
    fill_opacity=1, # 0~1
    line_opacity=1, # 0~1
    legend_name='Unemployment rate(%)'
).add_to(m)
m

기초예제

아파트 유형 지도 시각화

m = folium.Map(location=[37.505894533131, 126.93450729567374], zoom_start=13)

for idx, row in df.iterrows():
    
    lat, lng = row.위도, row.경도
    folium.Marker(
        location=[lat, lng],
        popup=row.주소,
        tooltip=row.분류,
        icon = folium.Icon(
            icon='home',
            color='lightred' if row.세대수 >= 199 else 'lightblue',
            icon_color='darked' if row.세대수 >= 199 else 'darkblue',
                    )).add_to(m)
        
    folium.Circle(
    location=[lat, lng],
        radius=row.세대수 * 0.5,
        fill = True,
        color='pink' if row.세대수 >= 518 else 'green',
        fill_color = 'pink' if row.세대수 >= 518 else 'green',
    ).add_to(m)
    
m

profile
끄적끄적..

0개의 댓글