Python/Pandas

    Pandas - 날짜 단위로 그룹화하기 resample()

    시카고의 범죄 발생 시각을 기록한 데이터가 있다. 이 데이터로 prophet 라이브러리를 사용해 미래에 범죄가 얼마나 발생할지 예측하려 한다. prophet 참고: https://donghyeok90.tistory.com/190 Prophet 라이브러리를 사용한 Time Series(시계열) 데이터 예측 1. Prophet 라이브러리 페이스북이 개발한 일변량(하나의 변수) 시계열 예측을 위한 오픈소스 라이브러리 경향성(Trends), 계절성(seosonality), 휴일(holidays)을 반영하는 모델이다. 계절적 효과가 강하고 donghyeok90.tistory.com groupby 함수를 이용해서는 날짜데이터를 년단위, 월단위, 일단위 등으로 그룹화 할 수 없다. 날짜 단위로 그룹화하기 위해 pan..

    Numpy/Pandas 에서 datetime 다루기

    파이썬의 datetime은 iterable 하지 않다. 그래서 넘파이 라이브러리에선 이를 보강해, array도 처리할 수 있는 datetime64 클래스를 만들었다. 넘파이를 기반으로 하는 판다스에서도 사용가능하다. import numpy as np someday = np.array('2022-05-11', dtype= np.datetime64) someday >>> array('2022-05-11', dtype='datetime64[D]') someday + 10 >>> numpy.datetime64('2022-05-21') someday - 35 >>> numpy.datetime64('2022-04-06') someday + np.arange(5) >>> array(['2022-05-11', '202..

    Pandas 데이터프레임에서 boolean indexing의 활용

    import pandas as pd df = pd.read_csv('crime.csv', index_col=0) df​ 데이터를 보니 검거율이 100을 넘는 값들이 있다. 100을 초과한 값들을 100으로 변경해주려 한다. 불리언 인덱싱을 활용해 여러 컬럼에 있는 값들을 한번에 바꿀 수 있다. df.loc[: , '강간검거율':'폭력검거율'] > 100 df[ df.loc[: , '강간검거율':'폭력검거율'] > 100 ] df[ df.loc[: , '강간검거율':'폭력검거율'] > 100 ] = 100

    Pandas 피벗 테이블(Pivot table)

    pivot table을 사용하면 컬럼에 중복된 값이 있을 때, 컬럼을 인덱스로 만들어 유니크하게 만들 수 있다. import pandas as pd import numpy as np df = pd.read_excel('../data/sales-funnel.xlsx') # 에러가 날 경우 pip install openpyxl df pd.pivot_table(df, index=['Name']) # index 파라미터에는, 유니크하게 만들고 싶은 컬럼의 이름을 적는다. # 중복되는게 있을때 디폴트로 수치데이터들의 평균이 출력된다. # Manager 와 Rep 를 유니크하게 만들고, 수치의 평균을 구하라 pd.pivot_table(df, index=['Manager', 'Rep']) # Name 컬럼을 유니크하..

    오픈API Goolglemaps Geocode로 위치정보 받아오기

    import pandas as pd df = pd.read_csv('../data/crime_in_Seoul.csv', encoding='euc-kr', thousands=',') df 이 데이터프레임에 있는 관서명을 토대로 어느 구에 속해있는지 찾아 새로운 컬럼으로 만들려한다. 위치정보를 받아오기 위해 오픈 api인 Googlemaps를 사용해 보겠다. https://cloud.google.com/maps-platform/?h1=ko Google Maps Platform - Location and Mapping Solutions Create real world and real time experiences for your customers with dynamic maps, routes & places ..

    Pandas의 DataFrame.plot() 으로 시각화하기

    판다스 데이터프레임의 plot 메소드는 x축에 인덱스를 셋팅하고, y축에는 모든 컬럼의 데이터를 셋팅해준다.(모든 컬럼을 차트로 그려준다) import pandas as pd import matplotlib.pyplot as plt # 한글처리코드 import platform from matplotlib import font_manager, rc plt.rcParams['axes.unicode_minus'] = False if platform.system() == 'Darwin': rc('font', family='AppleGothic') elif platform.system() == 'Windows': path = "c:/Windows/Fonts/malgun.ttf" font_name = font_ma..

    pandas.read_csv() 콤마( , ) 가 포함된 수치형 컬럼 불러오기

    판다스로 csv 파일을 불러오다 보면 숫자 데이터인데 콤마가 포함되어 있어서 object 타입이 된 경우를 많이 볼 수 있다. 그러면 각종 연산이 불가능하기 때문에, 타입을 바꿔줘야 하는데 read_csv() 로 불러오는 과정에서 파라미터로 쉽게 할 수 있다. import pandas as pd df = pd.read_csv('../data/age.csv', encoding='cp949') df.head() df.describe() df.info() >>> RangeIndex: 3817 entries, 0 to 3816 Columns: 104 entries, 행정구역 to 2019년07월_계_100세 이상 dtypes: int64(1), object(103) memory usage: 3.0+ MB 숫자 ..

    matplotlib, seaborn 을 활용한 데이터 시각화(4) - 히트맵, 한글처리

    import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sb %matplotlib inline df = pd.read_csv('../data/fuel_econ.csv') df​ 히트맵(Heat Maps) 산점도는 여러 데이터가 한 군데 뭉치면 보기 힘들다. 이를 해결하기 위해 밀도를 나타내는데 좋은 히트맵을 사용할 수 있다. plt.hist2d(data=df, x='displ', y='comb', cmin=0.5, cmap='viridis_r', bins=20) # cmin=0.5 : 데이터가 없는 부분을 색을 넣지 않는다 # cmap='viridis_r' : 데이터가 많을수록 어둡게 plt.color..