Analysis

[데이터마이닝]seaborn -titanic,taxis,mpg,penguins,flights,tips

ialleejy 2024. 12. 5. 09:59

[타이타닉]

타이타닉 데이터셋: 생존 여부에 따른 fare와 age의 값 범위를 비교

import seaborn as sns
titanic= sns.load_dataset('titanic')
titanic
fare_die = titanic[titanic['survived']==0][['fare','age']]

fare_survival = titanic[titanic['survived']==1][['fare','age']]


f = lambda x: x.max() - x.min()
print("died person min-max fare and age ")
print(fare_survival.apply(f))

print("survival person min-max fare and age ")
fare_die.apply(f)

 

<result>

"""

died person min-max fare and age 
fare    512.3292
age      79.5800
dtype: float64
survival person min-max fare and age 
"""


"""
fare    263.0
age      73.0
dtype: float64
"""

 


 

[택시]

택시 데이터셋: total 요금의 분포를 확인하고, distance와 total의 관계를 색상별로 시각화

import seaborn as sns

taxis = sns.load_dataset('taxis')
sns.displot(taxis['total'], kde=True)
sns.jointplot(data=taxis,x='distance', y = 'total', hue='color',kind='scatter')

 


 

[MPG 자동차]

 

  • Weight와 Horsepower 관계
    • 자동차 무게와 마력의 상관관계를 회귀선을 포함한 산점도로 시각화.
  • Origin별 자동차 수:
    • 원산지별 자동차 수를 단일 색상 막대그래프로 나타냄.
  • Cylinders와 Origin별 분포:
    • 실린더 개수에 따른 자동차 수를 제조국별로 나누어 시각화.

 

import seaborn as sns

mpg = sns.load_dataset('mpg')
sns.jointplot(x="weight", y="horsepower", data=mpg, kind='reg');
sns.catplot(data=mpg, x="origin",  aspect=2,kind="count", color='steelblue')
sns.catplot(x="cylinders", data=mpg, aspect=4.0, kind='count', hue='origin')


 

[펭귄]

unique 한 list에 따른 숫자 갯수

펭귄 종별 개수를 보여주는 막대그래프를 생성

import plotly.express as px
import seaborn as sns
penguins= sns.load_dataset('penguins')

penguins['species'].unique()
penguins['species'].value_counts()
penguins['species'].value_counts().index.values



fig = px.bar(x=penguins['species'].value_counts().index.values, y=penguins['species'].value_counts(), width=600, height=400, title="Title 설정하기")
fig.show()


[FLIGHTS]


FLIGHT 데이터를 활용하여 대략적인 400명의 승객수를 갖는 월별 년도구하기

import plotly.express as px
import seaborn as sns

flight= sns.load_dataset('flights')

#그래프 그리기
fig = px.line(flight, x="year", y="passengers", color="month")


# Hover 설정 X 축으로 바꾸
fig.update_layout(hovermode="y")

 


 

[팁]

 

(1) tip percent로 SCATTER 그림그리고 linearregression으로 회귀한 선 같이 그림그리기

import plotly.express as px
import seaborn as sns 
from sklearn.linear_model import LinearRegression
import plotly.graph_objects as go

tips= sns.load_dataset('tips')
tips['tip_pct'] =  tips['tip'] /tips['total_bill'] 
tips

# 학습을 위해서 축 추가 
total_bill = np.expand_dims(tips['total_bill'], axis=1)
print(total_bill)


# LinearRegression로 total_bill 과 tip_pct를 회귀 분석 
reg = LinearRegression().fit(total_bill, tips['tip_pct'])
# LinearRegression로 total_bill로 예측된 회귀 분석값 구하기기
reg_y = reg.predict(total_bill)
reg_y


# scatter  그림그리기 
fig = px.scatter(tips, x="total_bill", y="tip_pct", 
                 title="Tips")
fig.update_layout(width=600,height=400)

# 회귀분석한 그림 추가 

fig.add_trace( go.Scatter(
        x=total_bill.flatten(),
        y=reg_y.flatten(),
        mode="lines",
        line=go.scatter.Line(color="gray"),
        showlegend=False)
)

fig.show()


(2) groupby 를 이용하여 plotly 로 bar 그리기

import seaborn as sns
df= sns.load_dataset('tips')
fig = px.histogram(df, x="sex", color='time', barmode='stack',height=400)
fig.show()

a = df.groupby(["sex", "time"]).size().unstack().reset_index()
a
df=px.data.tips()
a = df.groupby(["sex", "time"]).size().unstack().reset_index()
fig=px.bar(a, x="sex", y=["Dinner","Lunch"])
fig.show()