데이터를 테이블(JSON to Data Table)로 보게 되면 여러 장/단점이 있습니다. Pandas DataFrame으로 데이터 분석시 어떤 장단점이 있는지를 적어보겠습니다.

장점

  • 가독성 높음: 데이터가 명확하게 정리돼 있어 이해하기 쉬움
  • 비교 용이: 항목 간의 차이나 유사성을 빠르게 비교할 수 있있음
  • 정렬과 필터링 편리: 특정 조건에 따라 쉽게 정렬하거나 필터링이 가능하다.
  • 엑셀 등과 호환성 높음: 다양한 분석 도구와의 연동이 쉬워 업무에 효율적이이다.

단점

  • 큰 데이터는 복잡: 데이터 양이 많아지면 시각적으로 복잡해지고 이해하기 힘들어질 수 있음.
  • 패턴 인식 어려움: 숫자 위주의 테이블은 추세나 경향성 등 시각적 패턴 파악이 어렵다.
  • 직관성 부족: 표 자체로는 직관적이지 않아, 차트나 그래프 등 추가적인 시각화가 필요할 때도 있음.

JSON to Data Table Code 1

import json
import pandas as pd
import datetime

with open("b0044_AAPL_2406.json", "r") as fp_json:
    aapl_2406_data = json.load(fp_json)

pd_tmp_data = []

for _date in aapl_2406_data["Time Series (5min)"]:
    tmp_data = aapl_2406_data["Time Series (5min)"][_date]
    pd_tmp_data.append([datetime.datetime.strptime(_date, '%Y-%m-%d %H:%M:%S'), float(tmp_data['open']),
                        float(tmp_data['high']), float(tmp_data['low']), float(tmp_data['close']),
                        float(tmp_data['volume'])])
df = pd.DataFrame(pd_tmp_data, columns=['date', 'open', 'high', 'low', 'close', 'volume'])
print(df)

Output 1

                    date    open    high     low    close   volume
0    2024-06-28 19:55:00  211.41  211.70  211.40  211.660  13341.0
1    2024-06-28 19:50:00  211.31  211.44  211.31  211.440   4606.0
2    2024-06-28 19:45:00  211.31  211.38  211.29  211.350   2269.0
3    2024-06-28 19:40:00  211.28  211.38  211.28  211.325   1970.0
4    2024-06-28 19:35:00  211.16  211.30  211.14  211.280   4367.0
...                  ...     ...     ...     ...      ...      ...
3643 2024-06-03 04:20:00  192.85  192.91  192.84  192.910   1499.0
3644 2024-06-03 04:15:00  192.91  192.96  192.84  192.900   2229.0
3645 2024-06-03 04:10:00  192.91  192.95  192.79  192.950  11909.0
3646 2024-06-03 04:05:00  193.10  193.31  192.90  192.900  14845.0
3647 2024-06-03 04:00:00  192.45  193.14  192.45  193.050  26584.0

Code 2

print(df.median())

"""
pandas.DataFreame.median()
axis: The axis on which to standard the {0: index/1: columns} calculation.
skipna : Whether to ignore missing values.
level : For Multi Index, the level at which to perform the calculation.
numeric_only: Whether to use only numbers, decimals, and booleans.
kwargs : Additional keywords to pass to the function.
"""

Output 2

[3648 rows x 6 columns]
date      2024-06-14 11:57:30
open                   209.78
high                   209.94
low                   209.545
close                  209.78
volume                26344.5
dtype: object

개인적으로 가장 많이 사용하는 것은 일종에 “튀는 데이터”가 있는지 확인하고 데이터의 중복제거 해야하는지를 확인 하는데 사용하고 있는 것 같습니다.

그런데 데이터를 습관적으로 이렇게 테이블로 만들고 나서, 그래프를 그리거나 데이터를 컨트롤 하는게 익숙한 것은 사실입니다. 아마 데이터를 많이 보시는 분들은 모두 저와 비슷할 거라 생각합니다.

요즘은 조금 달라진 것 같지만 제가 배울때는 거의 개인의 감각에 의존해서 데이터를 분석했습니다. 데이터의 여러 측면을 시각적으로 보고 어느정도 판단이되고 나면 그때 로직을 넣는 방식으로 주로 작업을 했는데 요즘은 데이터가 어떤 특징을 가지는지 여러가지 데이터 분석 순서가 정립되어 있는 것 같습니다.

개인적으로 데이터를 분석하는데 있어서 분석가의 감각이 중요하고 생각하는 이유가 제가 좀 오래된 사람이라서 그런 것 같긴합니다. 최근 트렌드를 잘 못따라가고 있는게 아닌가 하는 생각도 드네요.

By Mark

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다