본문 바로가기
Programming/Python

[Python] 가속도계 데이터 분석

by goatlab 2023. 2. 13.
728x90
반응형
SMALL

가속도계 (Accelerometer)

 

가속도계는 동작의 가속도나 진동을 측정하는 데 사용되는 장치이다. 가속도계에서 제공하는 데이터는 3차원이며 낙상 감지 및 건강 모니터링과 같은 문제를 해결하기 위한 데이터 기반 애플리케이션에서 사용할 수 있다. 가속도계 데이터 분석을 위해 먼저 가속도계에서 수집한 데이터를 수집해야 한다. 가속도계는 3차원 데이터를 수집하므로 특정 시간에 대한 데이터 세트의 x, y, z 축에 대한 데이터를 갖는 것이 필수적이다.

 

import plotly.express as px
import pandas as pd
import plotly.graph_objects as go

data = pd.read_csv("accdata.csv")
print(data.head())
         Date      Time   accel_x   accel_y   accel_z
0  2022-09-03  23:35:16 -1.838747  3.543418  9.126697
1  2022-09-03  23:35:31  1.110910  1.810017  9.634268
2  2022-09-03  23:35:47  8.829816  0.833182  4.663905
3  2022-09-03  23:36:52 -0.852336 -0.124498  9.787497
4  2022-09-03  23:37:44 -0.900220 -0.095768  9.835381

 

Line plot

 

x축에 시간, y축에 가속도계 데이터를 배치한 선형 플롯을 시각화한다.

 

fig = px.line(data, x="Date", 
              y=["accel_x", "accel_y", "accel_z"], 
              title="Acceleration data over time")
              
fig.show()

 

히트맵

 

이제, 데이터의 패턴이나 추세를 파악하는 데 도움이 될 수 있는 하루 중 시간별, 요일별 평균 가속도 값을 살펴 본다.

 

data["hour"] = pd.to_datetime(data["Time"]).dt.hour
data["day_of_week"] = pd.to_datetime(data["Date"]).dt.day_name()
agg_data = data.pivot_table(index="hour", columns="day_of_week", 
                            values=["accel_x", "accel_y", "accel_z"], 
                            aggfunc="mean")

# Create a heatmap
fig = go.Figure(go.Heatmap(x=agg_data.columns.levels[1], 
                           y=agg_data.index, 
                           z=agg_data.values,
                           xgap=1, ygap=1, 
                           colorscale="RdBu", 
                           colorbar=dict(title="Average Acceleration")))
                           
fig.update_layout(title="Average Acceleration by Hour of Day and Day of Week")
fig.show()

 

산점도

 

이제, 가속도 벡터의 크기를 나타내는 새로운 특징을 만든다.

 

data['accel_mag'] = (data['accel_x'] ** 2 + data['accel_y'] ** 2 + data['accel_z'] ** 2) ** 0.5

 

이제, 시간에 따른 가속도 크기의 산점도를 만든다.

 

fig = px.scatter(data, x='Time', 
                 y='accel_mag', 
                 title='Magnitude of Acceleration over time')
                 
fig.show()

 

3D 산점도

 

x, y, z 축이 각 방향의 가속도를 나타내는 3D 산점도를 생성힌다.

 

fig = px.scatter_3d(data, x='accel_x', 
                    y='accel_y', 
                    z='accel_z', 
                    title='Acceleration in 3D space')
                    
fig.show()

히스토그램

 

가속도의 크기 분포를 시각화하기 위해 히스토그램을 만든다.

 

fig = px.histogram(data, 
                   x='accel_mag', 
                   nbins=50, title='Acceleration magnitude histogram')
                   
fig.show()

728x90
반응형
LIST