통계 기반 데이터 분석 - 이진 데이터, 시계열 데이터, 공간 데이터

givemcdonalds·2023년 5월 22일
0

Microsoft

목록 보기
6/9

데이터의 종류

이진 데이터

  • 두 가지 값 중 하나만을 가지는 데이터
    ex) 시험에 합격 했는지 여부, 제품이 결함이 있는지 여부 등
  • 머신 러닝에서 중요한 역할을 함
  • 분류 문제를 해결하는 경우 예측하고자 하는 대상이 이진 데이터인 경우가 많음
  • 비율, 오즈비, 로그 오즈비 등의 측정 지표를 사용하여 분석할 수 있음

lab03

import pandas as pd
import matplotlib.pyplot as plt

# 데이터 불러오기
titanic = pd.read_csv('../data/Titanic_data.csv')

# 성별에 따른 생존자 수와 사망자 수 구하기
survived_gender =titanic.groupby('Sex')['Survived'].sum()
dead_gender=titanic.groupby('Sex')['Survived'].count()-survived_gender

출력

Sex
female    233
male      109
Name: Survived, dtype: int64
Sex
female     81
male      468
Name: Survived, dtype: int64
# 그래프 그리기
plt.figure(figsize=(10, 6))
plt.bar(survived_gender.index, survived_gender.values, color='g', alpha=0.5, label='Survived')
plt.bar(dead_gender.index, dead_gender.values, bottom=survived_gender.values, color='r', alpha=0.5, label='Dead')
plt.title('Survivors by Gender')
plt.xlabel('Gender')
plt.ylabel('Number of Passengers')
plt.legend()
plt.show()

출력


시계열 데이터

  • 일정 시간 간격으로 측정된 데이터
    ex) 매일 측정된 주식 시장의 주가, 1시간 간격으로 기록된 기온, 5초 간격으로 기록된 심전도 데이터...
  • 시간에 따른 패턴이나 추세, 주기성 등을 파악하고 예측하는 것이 중요함
  • 시계열 분해, 이동평균, 지수 평활법, ARIMA 등이 있음
  • 최근에는 LSTM 과 RNN 을 사용하여 시계열 데이터를 예측 하는 방법이 있음

lab04

KOSPI 데이터를 활용한 시계열 데이터 시각화

import pandas as pd
import matplotlib.pyplot as plt

# 데이터 불러오기
data=pd.read_csv('../data/kospi.csv')

# Date 컬럼을 datetime 형식으로 변환하여 인덱스로 설정
data['Date']=pd.to_datetime(data['Date'])
data.set_index('Date',inplace=True)

print(data)

출력

                   Open         High          Low        Close    Adj Close  \
Date                                                                          
1997-07-01   744.979980   760.520020   744.669983   758.030029   758.030029   
1997-07-02   763.390015   777.289978   763.390015   777.289978   777.289978   
1997-07-03   778.820007   782.169983   773.270020   775.260010   775.260010   
1997-07-04   776.020020   783.239990   773.900024   781.700012   781.700012   
1997-07-07   781.500000   783.109985   772.140015   773.510010   773.510010   
...                 ...          ...          ...          ...          ...   
2017-06-28  2382.909912  2390.889893  2380.750000  2382.560059  2382.560059   
2017-06-29  2396.810059  2402.800049  2393.570068  2395.659912  2395.659912   
2017-07-03  2397.659912  2399.899902  2384.550049  2394.479980  2394.479980   
2017-07-04  2395.239990  2398.020020  2376.409912  2380.520020  2380.520020   
2017-07-07  2376.290039  2385.020020  2376.290039  2379.719971  2379.719971   

            Volume  
Date                
1997-07-01       0  
1997-07-02       0  
1997-07-03       0  
1997-07-04       0  
1997-07-07       0  
...            ...  
2017-06-28  361200  
2017-06-29  445100  
2017-07-03  311000  
2017-07-04  411800  
2017-07-07  141728  

[4938 rows x 6 columns]

데이터 시각화

# 그래프 그리기
plt.figure(figsize=(10, 6))
plt.plot(data.index, data['Close'])
plt.title('KOSPI Index')
plt.xlabel('Year')
plt.ylabel('Index')
plt.show()

출력

  • x축에 년도, y축에는 KOSPI 지수가 나타나며 KOSPI 지수가 시간에 따라 어떻게 변화하는지 알 수 있음

KOSPI Close 데이터의 분포를 나타내는 히스토그램 그래프

import seaborn as sns
plt.figure(figsize=(16,8))
 
sns.histplot(data=data , x='Close')
 
plt.xlabel("Price")
plt.ylabel('Count')
 
plt.show()

출력

  • x축은 종가(Close), y축은 해당 가격대에 해당하는 종가 데이터의 개수

공간 데이터

  • 지리정보와 관련된 데이터, 지도상의 위치 정보를 가지고 있는 데이터
  • 가장 일반적인 형태는 포인트 형식으로 위도와 경도 등의 좌표 정보를 가지고 있는 데이터 형태임
  • 라인 형식으로는 도로나 하천과 같이 길이와 방향이 있는 데이터가 있음
  • 폴리곤 형식으로는 도시나 지역과 같이 면적이 있는 데이터가 있음
  • 공간 데이터를 분석하려면 공간 데이터 베이스와 같은 특별한 도구나 프로그램을 사용하여 데이터를 저장하고 분석
    ex) 지리 정보를 이용하여 건물 가격을 예측하는 모델, 지진 발생 가능성을 예측하는 모델 등이 있음

GeoJSON

  • 지리 정보를 다루는 JSON형식의 데이터 교환 형식
  • 공간 데이터를 표현하기 위한 포맷으로서 지리적 좌표 및 속성 데이터를 특정 구조로 표현하고 이를 다른 소프트웨어나 서비스 에서 사용 할 수 있게 함
  • 일반적으로 웹 기반 지도 서비스에서 자주 사용되는 데이터 형식 중 하나임

lab05

서울시 행정구역 경계 데이터

import geopandas as gpd
import matplotlib.pyplot as plt

# 서울시 행정구역 경계 데이터 읽기
seoul_gdf=gpd.read_file('../data/seoul_municipalities_geo_simple.shp')

print(seoul_gdf)

출력

     code  name         name_eng base_year  \
0   11250   ???      Gangdong-gu      2013   
1   11240   ???        Songpa-gu      2013   
2   11230   ???       Gangnam-gu      2013   
3   11220   ???        Seocho-gu      2013   
4   11210   ???        Gwanak-gu      2013   
5   11200   ???       Dongjak-gu      2013   
6   11190  ????  Yeongdeungpo-gu      2013   
7   11180   ???     Geumcheon-gu      2013   
8   11170   ???          Guro-gu      2013   
9   11160   ???       Gangseo-gu      2013   
10  11150   ???     Yangcheon-gu      2013   
11  11140   ???          Mapo-gu      2013   
12  11130  ????     Seodaemun-gu      2013   
13  11120   ???     Eunpyeong-gu      2013   
14  11110   ???         Nowon-gu      2013   
15  11100   ???        Dobong-gu      2013   
16  11090   ???       Gangbuk-gu      2013   
17  11080   ???      Seongbuk-gu      2013   
18  11070   ???      Jungnang-gu      2013   
19  11060  ????    Dongdaemun-gu      2013   
20  11050   ???      Gwangjin-gu      2013   
21  11040   ???     Seongdong-gu      2013   
22  11030   ???       Yongsan-gu      2013   
23  11020    ??          Jung-gu      2013   
24  11010   ???        Jongno-gu      2013   

                                             geometry  
0   POLYGON ((127.11520 37.55753, 127.11880 37.557...  
1   POLYGON ((127.06907 37.52228, 127.07496 37.520...  
2   POLYGON ((127.05867 37.52630, 127.06907 37.522...  
3   POLYGON ((127.01397 37.52504, 127.01918 37.520...  
4   POLYGON ((126.98368 37.47386, 126.98464 37.469...  
5   POLYGON ((126.98224 37.50931, 126.98242 37.501...  
6   POLYGON ((126.89185 37.54737, 126.90281 37.541...  
7   POLYGON ((126.90156 37.47754, 126.90277 37.476...  
8   POLYGON ((126.82688 37.50549, 126.83122 37.505...  
9   POLYGON ((126.85984 37.57185, 126.85950 37.568...  
10  POLYGON ((126.82423 37.53788, 126.82890 37.539...  
11  POLYGON ((126.90522 37.57410, 126.90370 37.572...  
12  POLYGON ((126.95248 37.60509, 126.95481 37.603...  
13  POLYGON ((126.97389 37.62950, 126.97135 37.627...  
14  POLYGON ((127.10782 37.61804, 127.10362 37.617...  
15  POLYGON ((127.05288 37.68424, 127.05403 37.682...  
16  POLYGON ((127.01040 37.68189, 127.01073 37.676...  
17  POLYGON ((126.97718 37.62860, 126.97941 37.630...  
18  POLYGON ((127.07351 37.61284, 127.08325 37.616...  
19  POLYGON ((127.02527 37.57525, 127.03122 37.579...  
20  POLYGON ((127.08069 37.56906, 127.08553 37.568...  
21  POLYGON ((127.02547 37.56894, 127.03182 37.567...  
22  POLYGON ((127.01071 37.54118, 127.01044 37.539...  
23  POLYGON ((127.02547 37.56894, 127.02572 37.562...  
24  POLYGON ((126.97389 37.62950, 126.97718 37.628...  
  • 이 데이터는 서울시 25개 구를 나타내며 각 구는 Feature 객체로 표현됨
Type
  • 객체의 유형을 나타내는 문자열. Feature로 설정됨
Geometry
  • 이 속성은 type과 coordinates 속성으로 구성됨
  • type은 지오메트리의 유형(점,선,면)을 나타내는 문자열
Properties
  • 객체에 대한 추가 정보를 포함하는 객체
  • 각 구의 name_eng과 name_kor 속성을 포함하고 있음
  • 이 외에도 id, code, name 등의 속성 정보를 포함할 수 있음

시각화

# 그래프 크기 설정
plt.figure(figsize=(10, 10))
 
# 서울시 행정구역 경계 데이터 시각화
seoul_gdf.plot()
 
# 그래프 타이틀 설정
plt.title('Seoul Municipalities')
 
# x, y 축 라벨 설정
plt.xlabel('Longitude')
plt.ylabel('Latitude')
 
# 그래프 표시
plt.show()

출력

profile
운동 좋아하는 개발자

0개의 댓글