Data analysis of edible mushrooms and poisonous mushrooms. (ft.Pandas,seaborn,matplot.pyplot)

ds_lec·2023년 2월 27일
0

data.analysis

목록 보기
1/2

시작하기 앞서 이 포스팅은 데이터 분석에 있어서 가장 기초적인 공부를 다시 복습을 하는 차원에서 작성됨을 알립니다.

Essential Library for data analysis.

    import numpy as np
    import pandas as pd
    import seaborn as snsimport matplot.pyplot as plt

pandas와 seaborn은 데이터를 시각화하는데 중요하기 때문에 꼭 분석하기전에 불러오고, numpy는 숫자가 들어가는 데이터에 분석하기에 필수적인 라이브러리이다.

Load saved csv files

(저장된 data.csv파일을 불러오는 코드)

    df = sns.read_csv("./file_name/data.csv")
    display(df)

seaborn의 라이브러리에서 read_csv("파일위치/파일") 형식으로 csv를 불러올수있다.
diplay 메소드로 불러온 데이터파일을 출력을 할수 있게 도와줄수있다.
print 메소드는 문자열로 출력이 되기 떄문에 데이터를 출력할 떄는 display를 이용한다.

1. Categorical data analysis method of imported data type

pandas의 crosstab의 이용하여 종속변수와 독립변수 이용.
(이때 변수는 only 2개이다.)

    # 1. 종속변수 - 독립변수 각각 1개 데이터분석
    ct = pd.crosstab(df["종속"], df["독립"]) # 종속변수와 독립변수로 이뤄진 crosstab을  ct라는 객체에 저장.     
    sns.heatmap(data = ct,
    			 cmap = sns.palettes.light_palettes("gray", as_cmap = True),
                annot = True, fmt = "d")

2. Categorical data analysis method of imported data type (종속변수1개에 독립변수 여러개를 1개씩 데이터분석 하는법)

    # 2. 종속변수 - 독립변수 종속변수1개 , 독립변수 여러개 관련해서 데이터 분석. (for문 이용)
    df.columns()
    for c_names in df[1:]:
    	ct = pd.crosstab(df["종속"], df[c_names])
        sns.heatmap(data=ct,
        			cmap= sns.palettes.light_palettes("gray", as_cmap = True),
                    annot = True, fmt ="d")
  • 인덱싱이란?
    dataframe_name[ start : stop : step] 으로 이뤄져 있다.
    위의 코드처럼 여러개의 독립변수와 하나의 종속변수가 있을 경우 쓰일 수 있다 보통 배열의 첫번째 값은 0번 부터 시작해서 n-1값의 순서를 배정받게 된다. 또한 아무런 값을 설정하지 않았을때는 stop 일땐 마지막까지 나타내고 , start에 값을 지정하지 않았을때는 0번째부터 돌아간다. 기본 step은 1로 설정되어져있다.

    Comparison of Edible Mushrooms with Poisoned Mushrooms

    (위의 방법으로 각각의 Target(종속변수)에 대해 feature(독립변수)와의 관계를 데이터 시각화를 시켜 알아보자)

우리가 사용할 파일은 식용버섯_독버섯.csv 이다.

  • 파일을 자신의 ipynb 파일들을 모아둔 폴더에 data 폴더를 만들어서 저장을 한다.
  • mscp.ipynb라는 자신만의 분석 파일을 만들어주자.
      import numpy as np
      import pandas as pd
      import seaborn as sns
      import matplot.pyplot as plt
      #분석할 csv파일 읽어오기
      df = sns.read_csv("./data/식용버섯_독버섯.csv/") 
      #for 문을 통해서 2번째 ~ 마지막까지 차례대로 아래 코드 실행.
      for c_names in df[1:]:  crosstab을 생성. 
        crosstable 생성. (2개의 변수끼리 비교가 가능해서 하나는 종속 다른하나는 독립변수)
      	ct = pd.crosstab(df["target"],df[c_names])
        # heatmap을 통해서 표를 생성하기  as_cmap = True는 색 연속, annot = True는 표의 빈도수를 나타냄. fmt = 'd'는  빈도수를 정수형으로 나타내주기.
        sns.heatmap(data = ct,
        			cmap = sns.palettes.light_palettes("gray", as_cmap=True),
                    annot = True,
                    fmt = "d",vmin = 0)     
        # 표를 개별로 출력하기.
        plt.show()

여기까지가 내가 한 데이터 분석에 필요한 시각화이다.
모든 컬럼 즉 변수들의 종류를 알아보기위한 코드를 적어보자.


df.columns() #df객체안의 컬럼들을 모두 나타내준다.

이렇게 많은 독립변수들이 존재하기 때문에 유의미한 데이터들만 다루겠다.

  • gill_color란 버섯갓 밑주름 색을 의미한다.
    위의 도표를 보면 brown = b (갈색)에서 확연히 edible와 poison이 차이가 나는걸 알수 있다. 이를통해 통상 갈색을 띈 버섯은 독버섯에 가깝다라는 추측을 할수 있다.

  • odor은 향을 의미한다.
    위의 시각화된 데이터를 통해서 foul(악취)=f 와 none(무향)=n 의 자료를 보면 확연히 차이가 edible와 poison의 차이가 심하다는걸 확인할수 있다.

Conclusion

  • Edible mushrooms and poisonous mushrooms can be identified through the "color of mushroom mustard" and "smell".
  • In particular, it was found that poisonous mushrooms can be identified through "brown" among colors and "odorless or foul" among smells.
profile
sturdy stupid

0개의 댓글