23.01.28

박무연·2023년 1월 28일
0

🟣EDA

목록 보기
1/9
post-thumbnail

너무 풀렸따,, 다시 열심히!!

- EDA 코드 정리!

1. 데이터 불러오기

- .. : 현재 폴더에서 하나 상의 폴더로 이동

CCTV_Seoul = pd.read_csv('../data/01. Seoul_CCTV.csv', encoding='utf-8')

- rename : 컬럼 이름 바꾸기

CCTV_Seoul.rename(columns={CCTV_Seoul.columns[0] : '구별'}, inplace=True)
  • 변수명.rename(columns={원래 컬럼 : 바꿀커럼})
  • inplace : 현재 변수명에 그대로 저장!

- 컬럼 가져오기

pop_Seoul = pd.read_excel(
    '../data/01. Seoul_Population.xls', header=2, usecols='B, D, G, J, N'
)
  • header : 시작할 행 지정
  • usecols : 가져올 컬럼

2~3. 데이터 훓어보기

- 조건에 따른 정렬

CCTV_Seoul.sort_values(by='소계',ascending=True).head()
  • by=변수명 : 변수명을 기준으로 오름차순 or 내림차순

- unique

pop_Seoul['구별'].unique()
  • unique를 사용하여 하나라도 있는 구별 출력

4. 데이터 합치기

- merge를 사용하여 데이터 합치기

data_result = pd.merge(CCTV_Seoul,pop_Seoul,on='구별')
data_result.head()
  • 데이터 합치기 위해 merge 사용
  • left, right를 지정하고 key 값을 구별 지정하여 합친다!

5. 데이터 시각화

- plot을 사용하여 바로 그래프 그리기!

def drawGraph():
    data_result['소계'].sort_values().plot(
        kind='barh', grid=True, figsize=(10,10)
    );
drawGraph()
  • DataFrame은 바로 plot() 명령으러 사용 할 수 있다!
  • kind = 원하는 그래프 형태
  • grid = 격자
  • figsize = 그래프 크기
  • 함수와 하여 간단하게 그리자!

??? dataframe에서 plot을 사용할 때 x,y를 지정해서 할 수 있나???
https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.plot.html
될듯?? 나중에 기억나면 해보쟈

6. 데이터 경향 표시

- scatter plot

plt.figure(figsize =(14,10))
plt.scatter(x축, y축, s=점사이즈)
plt.xlabel(x축 이름)
plt.ylabel(y축 이름)
plt.show()

- 선형회귀

  • np.polyfit : 직선을 구성하기 위한 계수 계산
  • np.poly1d : ployfit으로 찾은 계수로 python에서 사용할 함 수로 만들어줌

https://numpy.org/doc/stable/reference/generated/numpy.polyfit.html

import numpu as np

fp1 = np.ployfit(x,y,차원)
f1 = np.poly1d(fp1)
  • poly1d(넣고싶은값) 회귀선 위의 값을 보여준다

- 경향선을 그리기 위해 x 데이터 생성

  • np.linspace(a,b,n) : a 부터 b까지 n개의 동강격 데이터 생성
  • range(a,b,c)랑 다른점 : range는 정수만 가능

7. 강조하고 싶은 데이터 시각화

- 이해했따...!!

  • 오차계산은 단순히 오차가 큰것과 작은 것을 선택하기 위한 계산
  • 즉 그래프 내에서는 실제로 점이 찍히는 것이 아니다!!!!
  • 경향에서 얼마나 벗어났는지 지표를 저.스.트 오차 계산 한것,,!!
data_reulst['오차'] = data_result['소계'] - f1(data_result['인구수])
  • 경향의 차이가 큰 것과 작은 것을 뽑아야하기 때문에 둘다 만들어 준다!
def drawGraph():
    
    plt.figure(figsize=(14,10))
    plt.scatter(data_result['인구수'], data_result['소계'], c=data_result['오차'], cmap=my_cmap, s=50)
    plt.plot(fx,f1(fx), ls='dashed', lw=3, color='g')
    for i in range(5):
        plt.text(
            df_sort_f['인구수'][i]*1.02, # x좌표
            df_sort_f['소계'][i]*0.98, # y좌표
            df_sort_f.index[i], # title
            fontsize=15
        )
        
        plt.text(
            df_sort_t['인구수'][i]*1.02,
            df_sort_t['소계'][i]*0.98,
            df_sort_f.index[i],
            fontsize=15
        )
    plt.xlabel('인구수')
    plt.xlabel('CCTV')
    plt.colorbar()
    plt.grid()
    plt.show()

drawGraph()
  • 오차 컬럼이 x축, y축 컬럼과 대응이 된다
  • 그래서 색깔이 구분된다

- plt.text

  • Add text to the Axes. Add the text s to the Axes at location x, y in data coordinates
matplotlib.pyplot.text(x, y, s, fontdict=None, **kwargs)
  • x,y : The position to place the text.
  • s : The text.
profile
Easy day!

0개의 댓글