코딩하는 타코야끼

[스터디 노트] Week5_4일차 [unit14 ~ 21] - EDA(범죄) 본문

zero-base 데이터 취업 스쿨/스터디 노트

[스터디 노트] Week5_4일차 [unit14 ~ 21] - EDA(범죄)

가스오부시 2023. 8. 16. 01:26
728x90
반응형

📍 df.div( )

  • Pandas의 div() 함수는 DataFrame 또는 Series에서 요소 간 나눗셈 연산을 수행합니다.
  • 이 함수는 두 개의 DataFrame, Series, 또는 단일 숫자 간에 요소 단위의 나눗셈을 가능하게 합니다.
    • other: 다른 DataFrame, Series, 또는 scalar 값과 나누기를 수행합니다.
    • axis: 연산을 적용할 축을 지정합니다. 'index'(또는 0)는 수직 연산을, 'columns'(또는 1)는 수평 연산을 나타냅니다.
    • level: MultiIndex의 경우, 레벨에 따라 연산을 적용하려면 레벨을 지정합니다.
    • fill_value: NaN 값을 대체하기 위한 값입니다.
    # 강도 검거율
    crime_anal_gu["강도검거"] / crime_anal_gu["강도발생"]
    >>>
    구별
    강남구     1.076923
    강동구     0.928571
    강북구     0.800000
    관악구     0.894737
    광진구     0.545455
    구로구     1.300000
    노원구     1.500000
    .
    .
    .
    용산구     1.111111
    은평구     0.777778
    종로구     0.750000
    중구      0.875000
    중랑구     1.000000
    dtype: float64
crime_anal_gu[["강도검거", "살인검거"]].div(crime_anal_gu["강도발생"], axis = 0)


1. 서울시 범죄현황 데이터 최종 정리

col2 = ["강간검거율", "강도검거율", "살인검거율", "절도검거율", "폭력검거율"] 
crime_anal_norm["검거"] = np.mean(crime_anal_norm[col2], axis = 1)
crime_anal_norm.head()


2. Seaborn

import matplotlib.pyplot as plt
import seaborn as sns

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)

plt.figure(figsize = (8, 5))
plt.plot(x, y1, x, y2, x, y3, x, y4)
plt.show()

sns.set_style("whitegrid") # white, dark 도 있음
plt.figure(figsize = (8, 5))
plt.plot(x, y1, x, y2, x, y3, x, y4)
plt.show()


📍 sns.boxplot( )

  • Seaborn은 matplotlib을 기반으로 하는 Python 데이터 시각화 라이브러리입니다.
  • 통계적 그래픽을 생성하는데 특화되어 있으며, 다양한 그래픽을 생성하는 강력한 함수들을 제공합니다.
  • boxplot() 함수는 Seaborn 라이브러리에서 제공하는 함수 중 하나로, 박스 플롯(또는 상자 수염 그림)을 생성하는 데 사용됩니다.
  • 박스 플롯은 데이터의 중앙값, 사분위수, 이상치 등을 한눈에 파악하기 좋게 나타내 줍니다.
    • x, y, hue: 데이터셋의 변수를 지정합니다. 데이터를 분할하는 데 사용됩니다. x와 y는 각각 x축과 y축에 대응하는 데이터, hue는 데이터의 하위 그룹을 구분하는 데 사용됩니다.
    • data: 입력 데이터를 지정합니다. 일반적으로 pandas DataFrame을 사용합니다.
    • order, hue_order: 입력된 순서에 따라 범주형 변수의 레벨을 그립니다.
    • orient: 박스 플롯의 방향을 결정합니다('v' 또는 'h'). 대부분의 경우 자동으로 추론되지만, 단일 변수를 그릴 때는 필요합니다.
    • color, palette: 박스 플롯의 색상을 지정합니다. color는 모든 요소에 대해 동일한 색상을 지정하고, palette는 다양한 색상을 지정합니다.
    • width: 박스의 너비를 결정합니다.
    • dodge: hue 변수가 있을 때, 박스를 분리할지 여부를 결정합니다.
    • fliersize: 이상치의 마커 크기를 결정합니다.
    • linewidth: 라인의 너비를 결정합니다.
    • whis: 이상치를 결정하는 비율이나 범위를 설정합니다. 기본적으로 1.5 IQR(Inter-Quartile Range, 사분범위)를 사용합니다.
    • ax: matplotlib의 축 객체를 지정합니다. 여러 개의 서브플롯을 그릴 때 유용합니다.

⚡️ boxplot에 컬럼을 지정

plt.figure(figsize = (8, 6))
sns.boxplot(x = "day", y = "total_bill", data = tips)
plt.show()

 

⚡️ 컬럼을 지정하고 구분을 지을 수 있다.

plt.figure(figsize = (8, 6))
sns.boxplot(x = "day", y = "total_bill", hue = "smoker", data = tips, palette = "Set3")
plt.show()

⚡️swarmplot( )

# swarmplot
plt.figure(figsize = (8, 6))
sns.swarmplot(x = "day", y = "total_bill", data = tips, color = ".5")
plt.show()

 


📍 sns.lmplot( )

  • Seaborn의 lmplot() 함수는 선형 회귀 모델을 만들고 이를 시각화하는 기능을 제공합니다.
  • 이 함수는 2차원 산점도를 기반으로 하며, 그 위에 회귀 직선과 95% 신뢰 구간을 표시해줍니다.
    • x, y: 데이터셋의 변수를 지정합니다. x축과 y축에 대응하는 데이터입니다.
    • data: 입력 데이터를 지정합니다. 일반적으로 pandas DataFrame을 사용합니다.
    • hue, col, row: 데이터를 분할하는 데 사용되는 변수를 지정합니다. hue는 색상을 변경하여 하위 그룹을 구분하고, col과 row는 여러 서브플롯을 생성합니다.
    • palette: 색상 팔레트를 지정합니다.
    • height: 그래프의 높이를 지정합니다.
    • aspect: 각 개별 그래프의 가로/세로 비율을 지정합니다.
    • markers: 산점도의 마커 모양을 지정합니다.
    • fit_reg: 회귀선을 그릴지 여부를 결정합니다. 기본적으로 True입니다.
    • ci: 신뢰 구간을 그릴지, 그리고 어느 정도의 신뢰 구간을 그릴지 결정합니다.
    • order: 회귀 다항식의 차수를 결정합니다.
    • logistic, lowess, robust, logx: 다양한 종류의 회귀를 지정합니다. 기본적으로는 선형 회귀를 그립니다.
    • x_jitter, y_jitter: 점들의 위치를 약간 무작위로 바꾸어 데이터의 밀도를 나타내는 데 사용됩니다.
sns.set_style("darkgrid")
sns.lmplot(x = "total_bill", y = "tip", data = tips, hue = "smoker", height = 6)
plt.show()

⚡️ 추가 출력

sns.set_style("darkgrid")
sns.lmplot(x = "x", y = "y", data = anscombe[anscombe.dataset == "II"],
           order = 1,
           ci = None,
           scatter_kws = {"s": 80},
           height = 6)

sns.set_style("darkgrid")
sns.lmplot(x = "x", y = "y", data = anscombe[anscombe.dataset == "II"],
           order = 2,
           ci = None,
           scatter_kws = {"s":80},
           height = 6)

sns.set_style("darkgrid")
sns.lmplot(x = "x", y = "y", data = anscombe[anscombe.dataset == "III"],
           ci = None,
           scatter_kws = {"s":80},
           height = 6)


📍sns.heatmap( )

  • Seaborn의 heatmap( ) 함수는 데이터를 색상으로 인코딩한 2차원 (그래픽) 히트맵을 그리는 데 사용됩니다.
  • 이는 변수 간의 상관 관계나 2차원 데이터의 분포 패턴 등을 시각화하는데 매우 유용합니다.
    • data: 히트맵으로 그릴 데이터셋을 지정합니다. 일반적으로 pandas DataFrame이나 numpy array를 사용합니다. 이 데이터는 2차원 형태여야 합니다.
    • vmin, vmax: 컬러맵의 최소, 최대값을 지정합니다.
    • cmap: 컬러맵을 지정합니다. Matplotlib의 컬러맵 이름이나 컬러 객체를 사용할 수 있습니다.
    • center: 컬러맵의 중심값을 지정합니다. 이 값이 주어지면 diverging 컬러맵을 사용하게 됩니다.
    • robust: 이 값이 True면, 데이터의 이상치를 무시하고 컬러맵을 계산합니다.
    • annot: 이 값이 True면, 각 셀에 값이 표시됩니다.
    • fmt: 셀에 표시되는 값의 포맷을 지정합니다.
    • linewidths: 셀 사이의 선의 너비를 지정합니다.
    • linecolor: 셀 사이의 선의 색상을 지정합니다.
    • cbar: 컬러 바의 표시 여부를 지정합니다.
    • cbar_kws: 컬러 바에 대한 추가 키워드 인수를 지정합니다.
    • square: 이 값이 True면, 각 셀이 정사각형이 됩니다.
    • mask: 이 값이 True인 위치는 히트맵에서 마스킹(데이터가 표시되지 않음)됩니다.
    • ax: matplotlib의 축 객체를 지정합니다. 여러 개의 서브플롯을 그릴 때 유용합니다.

 

plt.figure(figsize = (8, 6))
sns.heatmap(flights, annot = True, fmt = "d", cmap = "YlGnBu")
plt.show()


📍 sns.pairplot( )

  • Seaborn 라이브러리의 한 함수로, 주로 데이터프레임의 여러 변수 간의 쌍별 관계를 시각화하는 데 사용됩니다.
  • Seaborn은 Matplotlib 기반의 Python 데이터 시각화 라이브러리로, 통계적 그래픽을 생성하는 데 유용합니다

📎 주요 기능:

  1. 대각선 상의 히스토그램: 각 변수의 분포를 보여줍니다.
  2. 대각선 밖의 산점도: 두 변수 간의 관계를 보여줍니다

📎 주요 옵션:

  1. data: 시각화할 데이터프레임. 대부분의 경우 Pandas 데이터프레임이 사용됩니다.
  2. hue: 색상으로 구분할 열의 이름. 카테고리형 변수를 기반으로 색상을 구분하게 됩니다.
  3. palette: 색상 팔레트. 여러 가지 스타일로 색상을 지정할 수 있습니다.
  4. markers: 각 카테고리에 사용될 마커의 유형을 지정합니다.
  5. kind: 그래프의 종류를 지정합니다. 'scatter'와 'reg' 중 하나를 선택할 수 있으며, 'reg'는 회귀선을 포함한 산점도를 그립니다.
  6. diag_kind: 대각선에 표시될 그래프의 종류. 'hist' 또는 'kde' 중 하나를 선택할 수 있습니다. 'kde'는 커널 밀도 추정치를 나타냅니다.
  7. corner: 대각선 위의 그래프만 표시하려면 True로 설정합니다.
  8. plot_kws diag_kws: 각각 산점도와 대각선 그래프에 대한 추가적인 키워드 인자를 전달하는 데 사용됩니다.
sns.pairplot(iris, hue = "species")
plt.show()

반응형