pandas I 강의에 이어서 pandas 라이브러리의 다음과 같은 기능에 대해 알아봅니다.
groupby
pivot_table
joint method (merge / concat)
Database connection
Xls persistence
여러가지 데이터들 중에 핸들링 하는 방법을 배운다.
SQL groupby명령어와같음
예를 들면, df.groupby(["Team", "Year"])["Points"].sum()
팀별로 묶고, 팀별에서 년도를묶는다. 그리고 년 도별로 points를 더함
이렇게 나온 결과 값을, unstack이나, reset_index 같은걸로 데이터를 풀어 줄수 있고,
h_index.sort_values()같이 sort를 사용해서 정렬해줄수 있따.
h_index.sort_index(level=0)을 해서 원하는 기준점으로 솔트시킬수 있다.
여기서 h_index는 데이터 프레임의 모양이지만, 데이터 타입을 찍어보면 series데이터이다.
직접 테스트해보자
이 사이트 들어가면 데이터 다운 받을수 잇음.
https://www.shanelynn.ie/wp-content/uploads/2015/06/phone_data.csv
= pd.read_csv("파일경로/phone_data.csv")해주면 됨.
df_phone.head() 하면 파일 보임.
import pandas as pd
df_hoylee = pd.read_csv("phone_data.csv")
df_hoylee.head()
df_hoylee.dtypes
import dateutil
df_hoylee["date"] = df_hoylee["date"].apply(dateutil.parser.parse, dayfirst=True)
df_hoylee.dtypes
데이터 프레임의 데이터 형식을 바꿔볼수 있음list(df_hoylee.groupby("month"))
df_hoylee.groupby("month")["duration"].sum()
df_hoylee.groupby("month")["duration"].sum().plot()
1. 이런식으로 데이터를 달 별로 끊어서 볼수 있고df_hoylee.groupby(["month","item"])["duration"].count()
df_hoylee.groupby(["month","item"])["duration"].count().unstack()
이런 식으로도 해볼수 있고,
df_hoylee.groupby("month").agg({"duration":"sum"})
df_hoylee.groupby("month", as_index=False).agg({"duration":"sum"})
month를 인덱스로 쓰지 않을수 도 있다.
df_hoylee.groupby(["month", "item"]).agg({"duration":"sum","network_type":"count","date": "first"})
이런 식으로 좀더 다채롭게 활용도 가능하다.
df_hoylee.groupby(["month", "item"]).agg({"duration":[min, max, np.mean]})
test.add_prefix("duration")
를 해서, 어느 값의 최소값인지 최대값인지 이름을 붙여줄수도 잇따.
1장에서 했던거 처럼 pd_hoylee라는 곳에, csv파일을 넣고, date만 파일 타입을 바꿔준다.
df_hoylee['date'] = df_hoylee['date'].apply(dateutil.parser.parse, dayfirst=True)
df_hoylee.pivot_table(["duration"], index=[df_hoylee.month, df_hoylee.item], columns=df_hoylee.network, aggfunc="sum", fill_value=0)
df_hoylee.groupby(["month", "item", "network"])["duration"].sum().unstack()
원하데로 행 열을 생성하고, 값들을 나열할수 잇따. fill_value는 값이 안들어 가는 곳에는 0 을채워넣는다는 말.
두번쨰 방법으로 해도 된다. 첫번쨰 방법이 좀더 직관적?
df_movie = pd.read_csv("movie_rating.csv")
df_movie.head()
pd.crosstab(index=df_movie.critic,columns=df_movie.title,values=df_movie.rating,aggfunc="first").fillna(0)
똑같이 행렬 선언하고, 사용할수 있음 pivot이나, crosstab이나 비슷하게 행렬 만들수 있다.
우선 데이터를 생성
import os
files = [file_name for file_name in os.listdir("./big-data-tutorial/data") if file_name.endswith("csv")]
files
전에 했던건데, 이런식으로 파일을 불러올수도 있다.endswith("xlsx")으로 원하는 파일들만 불러올수도 잇다.
df_list = [os.path.join("data",df_filename) for df_filename in files]
파일이름을 불러올수 잇고
df_list = [pd.read_csv(os.path.join("data",df_filename)) for df_filename in files]
이런식으로 오픈도 할수 잇다.
save = pd.concat(df_list[0:])
한번에 save라는 변수에 묶어서 저장해줄수 잇다.
!conda install --y Xlsxwriter
엑셀 파일 쓸떄 필요한 코드
29 분 쯤 부터 데이터를 서버 와 연결하고 파일 저장하는거 나옴.
강의 소개
딥러닝의 기본 바탕이되는 확률론에 대해 소개합니다.
확률분포, 조건부확률, 기대값의 개념과 몬테카를로 샘플링 방법을 설명합니다.
데이터의 초상화로써 확률분포가 가지는 의미와 이에 따라 분류될 수 있는 이산확률변수, 연속확률변수의 차이점에 대해 설명합니다.
확률변수, 조건부확률, 기대값 등은 확률론의 매우 기초적인 내용이며 이를 정확히 이해하셔야 바로 다음 강의에서 배우실 통계학으로 이어질 수 있습니다. 기대값을 계산하는 방법, 특히 확률분포를 모를 때 몬테카를로 방법을 통해 기댓값을 계산하는 방법 등은 머신러닝에서 매우 빈번하게 사용되므로 충분히 공부하시고 넘어가시기 바랍니다.
• 딥러닝은 확률론 기반의 기계학습이론에 바탕을 두고 있습니다
• 기계 학습에서 사용되는 손실함수(lossfunction)들의 작동원리는 데이터 공간을 통계적으로 해석해서 유도하게 됩니다
• 딥러닝은 확률론 기반의 기계학습이론에 바탕을 두고 있습니다
• 기계학습에서 사용되는 사용되는 노름은 예측 오차의 분산을 가장 최소화하는 방향으로 학습하도록 유도합니다
• 분류문제에서 사용되는 교차엔트로피(cross-entropy)는 모델예측의 불확
실성을 최소화하는 방향으로 학습하도록 유도합니다
• 분산 및 불확실성을 최소화하기 위해서는 측정하는 방법을 알아야합니다
• 확률변수는확률분포 D 에 따라 이산형(discrete)과 연속형(continuous)
확률 변수로 구분하게됩니다
빨간 색 칸막이가 없다고 생각하면, 연속형의 확률변수 처럼 생각이 들지만, 빨간 칸으로 나누어서 본다고 가정하면, 빨간색 한칸에 몇개의 파란점이 있는지를 통해, 이산형으로 볼수도 잇다.
• 데이터 공간을 X*Y라표기하고 D는 데이터공간에서 데이터를 추출하는 분포입니다
데이터는 확률변수로 (x,y)~D라 표기
결합분포 P(x,y)는 원래 확률분포 D를 모델링합니다.
이떄 주의할점은 원래 확률분포 D가 이산이나 연속이나에 따라서 결합분포p(x,y)의 분포를 연속이냐 이산이냐 정하는게 아니고, 원래 확률분포에 상관없이 결합분포를 연속형이나 이산형으로 사용해 볼수 잇따.
결합분포p(x,y)를 입력 x에 대한 주변확률 분포로 y에 대해 적분해 P(x)로 만들어 줄수 잇따.
사진을 보면, x에 대해 확률이분포 되었지만, y에 대한 정보가 없어졌다는걸 볼수 잇따. 반대로 y에 대한 주변확률분포도 만들 수 있다.
사진을 보면, 아까랑 다르게, p(X|Y=1)이라는 식이 생겻는데, 이를 조건부 확률 분포라 하며, Y가 1일떄의 점들에 대한 주변확률 분포를 만들어 볼수도 있다.
우리가 관심을 가지는 방향에 따라 대이터 초상화를 그릴수 잇고, 데이터 분석하는데 도움을 준다는 걸 기억하자.