[Python] 10. Visualization

hhyun·2024년 6월 23일

[Python]

목록 보기
10/11

📖 Visualization

Data Read

import pandas as pd

# visualization libraries
import matplotlib.pyplot as plt
import seaborn as sns

# print the graphs in the notebook
# vscode 등 다른 사이트에서 사용 시
%matplotlib inline

# set seaborn style to white
sns.set_style("white")

💭 Q114. 'Unnamed: 0' Column을 삭제

  • 웬만하면 쓰지 말기
del df['Unnamed: 0']
df.head()

histplot() , jointplot() , pairplot()

💭 Q115. total_bill에 대해서 히스토그램을 그리시오

ttbill = sns.histplot(df.total_bill);

# x축의 이름과 y축의 이름 , 히스토그램의 title을 정해주기.
ttbill.set(xlabel = 'Value', ylabel = 'Frequency', title = "Total Bill");

💭 Q116. total_bill과 tip에 대해서 jointplot을 그리시오

sns.jointplot(x ="total_bill", y ="tip", data = df);

💭 Q117. 모든 연속성 변수에 대해서 pairplot을 그리시오

sns.pairplot(df);

stripplot()

💭 Q118. day에 따라 total_bill의 관계를 파악하기 위한 stripplot을 그리시오

sns.stripplot(x = "day", y = "total_bill", data = df);
  • hue='day' : 범주에 컬러를 각각 다르게 주기
sns.stripplot(x = "day", y = "total_bill", data = df, hue='day');

💭 Q119. day와 성별에 따라 tip의 관계를 파악하기 위한 stripplot을 그리시오

  • x축 - tip , y축 - day
sns.stripplot(x = "tip", y = "day", hue = "sex", data = df);

boxplot

💭 Q120. day와 time에 따라 total_bill의 관계를 파악하기 위한 boxplot을 그리시오

  • x축 - day , y축 - total_bill
sns.boxplot(x = "day", y = "total_bill", hue = "time", data = df);

Two Histogram

💭 Q121. 저녁(Dinner)과 점심(Lunch)을 기준으로 한 팁 값에 대해 두 개의 히스토그램을 생성

# better seaborn style
sns.set(style = "ticks")
plt.grid(True)

# FacetGrid 생성
g = sns.FacetGrid(df, col = "time")
g.map(plt.hist, "tip");

FacetGrid()

💭Q121. 남성과 여성을 대상으로 한 두 개의 산점도 그래프를 생성한 후 이 그래프들은 전체 청구 금액(total_bill)과 팁(tip) 간의 관계를 보여주며, 흡연자와 비흡연자로 구분

  • alpha : 투명도
  • add_legend() : 범례를 나타내기 위한 함수
g = sns.FacetGrid(df, col = "sex", hue = "smoker")
g.map(plt.scatter, "total_bill", "tip", alpha =.7)

g.add_legend();

💭 Q122. PassengerId를 인덱스로 설정

df.set_index('PassengerId', inplace=True)
df.head()

pie chart

💭 Q123. 남성과 여성의 비율을 나타내는 파이 차트를 생성

# 두 성별의 인원 수를 구하기
males = (df['Sex'] == 'male').sum()
females = (df['Sex'] == 'female').sum()

proportions = [males, females]

# pie chart 생성
plt.pie(
    proportions,
    
    labels = ['Males', 'Females'],

    shadow = False,

    colors = ['blue','red'],
    
 	# 부채꼴이 파이 차트의 중심에서 벗어나는 정도를 설정
    explode = (0.15 , 0),

    # 부채꼴이 그려지는 시작 각도를 설정 : 90% 각도
    startangle = 90,

    # 부채꼴 안에 표시될 숫자의 형식을 지정
    autopct = '%1.1f%%'

    )

plt.axis('equal')

# 제목 정하기
plt.title("Sex Proportion")

plt.tight_layout()
plt.show()

산점도

💭 Q124. 지불한 요금(Fare)과 나이(Age)를 나타내는 산점도를 생성

  • 조건 : 그래프의 색상은 성별에 따라 다르게 함
  • fit_reg=False : 회귀선 보이지 않음
  • fit_reg=True : 회귀선 보임
  • xlim / ylim : 각 축의 값의 경계를 지정합니다.
# 산점도 생성
lm = sns.lmplot(x = 'Age', y = 'Fare', data = df, hue = 'Sex', fit_reg=False)

# 제목 정하기
lm.set(title = 'Fare x Age')

# 각 축의 값의 경계를 지정
axes = lm.axes
axes[0,0].set_ylim(-5,)
axes[0,0].set_xlim(-5,85)

Histogram - hist()

💭 Q125. 지불한 요금(Fare)에 대한 히스토그램을 생성

import numpy as np
# df에 fare컬럼의 데이터들을 내림차순으로 정렬
df2 = df.Fare.sort_values(ascending = False)

# 배열 (0에서 600까지 10의 단위로)
binsVal = np.arange(0,600,10)
binsVal

# 히스토그램 생성
plt.hist(df3, bins = binsVal)

# x축,y축,title 정해주기
plt.xlabel('Fare')
plt.ylabel('Frequency')
plt.title('Fare Payed Histrogram')

# show the plot
plt.show()

0개의 댓글