Notice
Recent Posts
Recent Comments
Link
«   2026/02   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
Tags
more
Archives
Today
Total
관리 메뉴

Silver bullet

정형 데이터 분석 & 데이터 시각화 본문

AI/AI

정형 데이터 분석 & 데이터 시각화

밀크쌀과자 2024. 7. 1. 14:32

1. Various data type

  • Structured Data (정형 데이터) → ML
    • Relational DB
    • Spread sheets
  • Semi-structured data (반정형 데이터)
    • System logs
    • Sensor data
    • HTML
  • Unstructured data (비정형 데이터) → DL
    • Image / Video
    • Sound
    • Document

*음성데이터 푸리에 변환

 

 

2. 기초 pandas

# 엑셀 파일 읽기

df = pd.read_excel('엑셀.xlsx')

# with open('엑셀.xlsx', mode="r", encoding="utf-8") as file:
#     df = pd.read_excel(file)

 

pd.DataFrame의 하나의 열, 하나의 행은 pd.Series

# 인덱스 열 설정 가능
df.set_index('milk')
# (요약된 정보) Descriptive Statistics 기술통계량

df.describe()  # 묘사

# 평균(mean) / 중윗값(median) / 최빈값(mode)
# Standard Deviation 표준편차 / Variance 분산
  • 결측치(missing data)를 다루는 방법
    (ex. 보험 가입 고객들에 대한 데이터 中 나이(age)열에 일부 데이터가 빠져있을 때)

    - 랜덤하게 채워넣기 
    - 주변 (행의) 값들로 채워넣기 
    - 열의 대표값을 계산해서 채워넣기 (mean, median중위값)
    - 전체 행들을 그룹으로 묶어낸 후 그룹 내 해당 열의 대푯값으로 채워넣기 -> 두번째로 좋은 방법
    - 나머지 열들로 머신러닝 예측모델을 만든 후 해당 열의 값을 예측해 채워넣기 -> 가장 좋은 방법
    - 특정 기준 비율 이상으로 빠져있을 시 해당 열 삭제
df.loc[[3, 6, 8]]# 여러 개의 행을 꺼내기
# Series가 아닌 DataFrame으로 꺼내기
df.iloc[3:6, 0:3] # (권장o)열을 name이 아니라 번호로 지정
df['name'].head() # 하나의 열 출력하기 Seried

#특정 컬럼에서 0번재 값 가져오기 
df['컬럼명'][0]

df[['name', 'hair', 'feathers']].head() # 여러개의 열 출력하기 DataFrame

df["name"].str.contains("ar")

dir(df['name'].str) # 사용가능한 함수 확인
int64
float64 <- 64bit
64 -> 32 -> 8

Model Quantization (양자화)
df_new['new_hair'] = df_new['hair'].apply(lambda x : x+1)
# Type 을 index 로 하는 새로운 df 만들기 (엑셀의 pivot table 과 유사)

pivot_df = pd.pivot_table(df_new, index='type', aggfunc=np.sum) # Shift+Tab!
# 열 삭제하기
del pivot_df['new_hair']

# 행 삭제하기 
pivot_df = pivot_df.drop([3, 6, 7])
# 열 삭제하기 
pivot_df = pivot_df.drop(['name'], axis=1)

# 열 이름 바꾸기
pivot_df.rename(columns = {'eggs':'산란', 'feathers':'깃털'}, inplace=True)

# 산란 수 기준으로 정렬하기
pivot_df.sort_values(by='산란', inplace=True)

# 산란 수 기준으로 내림차순 정렬하기
pivot_df.sort_values(by='산란', ascending=False, inplace=True)
# 얕은 복사와 깊은 복사

pivot_df_2 = pivot_df # shallow copy 원본과 연결됨
pivot_df_3 = pivot_df.copy() # deep=True, deep copy 원본과 분리됨