본문 바로가기

Language87

파이썬 판다스 - 크롤링으로 얻은 csv 파일들을 concat으로 모두 합치기 크롤링을 하면서 중간중간 백업을 하다보니 여러 csv 파일이 생겨났다. pandas 의 concat 메소드를 사용하여 여러 csv 파일을 하나로 합치려고 한다. import pandas as pd import numpy as np import os # 파일들이 있는 폴더명으로 폴더내 파일 목록 확인 forders = os.listdir('관세') print(forders) df_all = pd.DataFrame() for i in range(0,len(forders)): if forders[i].split('.')[1] == 'csv': file = '관세/'+forders[i] df= pd.read_csv(file,encoding='utf-8') df_all = pd.concat([df_all, df].. 2021. 9. 10.
파이썬 '판다스 데이터 분석' - 시계열 데이터 판다스는 주식, 환율 등 금융 데이터를 다루기 위해 개발되었기에 시계열 데이터를 다루는 여러 가지 유용한 기능을 제공한다. 데이터는 주가 샘플 데이터를 사용하였다. import pandas as pd df = pd.read_csv('data/stock-data.csv') df.head() DateCloseStartHighLowVolume 02018-07-0210100108501090010000137977 12018-06-291070010550109009990170253 22018-06-2810400109001095010150155769 32018-06-2710900108001105010500133548 42018-06-261080010900110001070063039 df.info() RangeIndex.. 2021. 7. 31.
파이썬 판다스 - agg(func, axis, *args, **kwargs) pandas.DataFrame.agg — pandas 1.3.0 documentation list of functions and/or function names, e.g. [np.sum, 'mean'] pandas.pydata.org Aggregate using one or more operations over the specified axis. 자세한 사용법은 판다스 공식 문서에서 확인 가능하다. 데이터 프레임 # 데이터프레임 구조 df.sample() 학교명지역설립구분1학년2학년3학년4학년5학년6학년 4183청소초등학교충청남도공립111111 df.iloc[:,3:9].agg(['sum','min','max','mean']) 1학년2학년3학년4학년5학년6학년 sum19145.00000018909.000.. 2021. 7. 29.
파이썬 판다스 sidetable : df.stb.freq(..) - Create Simple Summary Tables in Pandas, 합계와 빈도수 참고 사이트 sidetable - Create Simple Summary Tables in Pandas - Practical Business Python Tue 02 June 2020 Posted by Chris Moffitt in articles Introduction Today I am happy to announce the release of a new pandas utility library called sidetable. This library makes it easy to build a frequency table and simple summary of missing values in pbpython.com 설치 !pip install sidetable 예시 import sidetable df.. 2021. 7. 27.
파이썬 '판다스 데이터 분석' - 데이터프레임에 함수 적용 .apply() 데이터프레임의 개별 원소를 특정 함수에 일대일 대응시키는 과정을 함수 매핑이라고 한다. 람다 함수를 포함하여 사용자 정의 함수를 적용할 수 있기 때문에 판다스 기본 함수로 처리하기 어려운 복잡한 연산을 데이터프레임 등 판다스 객체에 적용하는 것이 가능하다. import seaborn as sns titanic = sns.load_dataset('titanic') df = titanic.loc[:,['age','fare']] df['ten'] = 10 df.head() agefareten 022.07.250010 138.071.283310 226.07.925010 335.053.100010 435.08.050010 df.info() RangeIndex: 891 entries, 0 to 890 Data co.. 2021. 7. 25.
파이썬 '판다스 데이터 분석' - 정규화 MinMax, Standard 변수의 범위가 다르면 상대적으로 큰 숫자 값을 갖는 변수의 영향이 더 커진다. 숫자 데이터의 상대적인 크기 차이를 제거할 필요가 있다. MinMaxScaler 기법 y = x - 최소 / 최대 - 최소 min_x = df.horsepower - df.horsepower.min() min_max = df.horsepower.max() - df.horsepower.min() df_result = min_x / min_max df_result 0 0.456522 1 0.646739 2 0.565217 3 0.565217 4 0.510870 ... 393 0.217391 394 0.032609 395 0.206522 396 0.179348 397 0.195652 Name: horsepower, Length: 3.. 2021. 7. 23.
파이썬 '판다스 데이터 분석' - 범주형(카테고리) 데이터 처리 -> 구간 분할 cut(), 더미 변수 get_dummies(Series):원핫인코딩, factorize(Series):라벨인코딩 연속 데이터를 일정한 구간 (bin) 으로 나눠서 분석하는 것이 효율적인경우가 있다. 가격, 비용, 효용 등 연속적인 값을 일정한 수준이나 정도를 나타내는 이산적인 값으로 나타내어 구간별 차이를 드러내는 것 구간 분할 - 각 구간을 범주형 이산 변수로 변환하는 과정을 구간 분할(binning)이라고 한다. np.histogram bins = 구간 갯수, 반환값 -> count = 각 구간에 속하는 값의 개수 bin_dividers = 경계값 리스트 import numpy as np # np.histogram 함수로 3개의 bin으로 구분할 경계값의 리스트 구하기 count, bin_dividers= np.histogram(df.horsepower, bins =3) print(count, bin_divid.. 2021. 7. 21.
파이썬 '판다스 데이터 분석' - 단위 변환, 자료형 변환 .astype('float'), unique(), nunique(), replace({ type: dict},inplace=True) 단위 변환 서로 다른 단위가 섞여 있거나 같은 대상을 다른 형식으로 표현하면 분석의 정확도는 현저히 낮아진다. 데이터 포맷을 일관성있게 표준화 하는 작업이 필요하다. 마일 야드 온스 -> 미터 평 그램 import pandas as pd df = pd.read_csv('data/auto-mpg.csv', header=None) df.columns=['mpg','cylinders','displacement','horsepower','weight','acceleration','model year','origin','name'] 마일 -> 킬로미터 mpg_to_kpl = 1.60934/3.78541 df['kpl'] = (df['mpg'] * mpg_to_kpl).round(2) df['kpl'].head().. 2021. 7. 19.
파이썬 '판다스 데이터 분석' - 결측치 처리 : replace(), dropna(subset= ), fillna(), value_counts().idxmax(), duplicated(), drop_duplicates() 데이터프레임에는 원소 데이터 값이 종종 누락되는 경우가 있다. 데이터를 파일로 입력할 때 빠트리거나 파일 형식을 변환하는 과정에서 데이터가 소실되는 것이 주요 원인이다. 일반적으로 유효한 데이터 값이 존재하지 않는 누락 데이터를 NaN( Not a Number ) 으로 표시한다. '타이타닉 데이터셋을 사용 import seaborn as sns df= sns.load_dataset('titanic') 결측된 데이터 확인 df.info() RangeIndex: 891 entries, 0 to 890 Data columns (total 15 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 survived 891 non-nul.. 2021. 7. 17.
파이썬 '판다스 데이터 분석' - 함수 : sample(), .at[idx,'컬럼명'],pop('컬럼명') ,nlargest(idx, list), isin([]) 그 밖의 df 함수 랜덤한 한 행의 데이터 보기 df.sample() mpgcylindersdisplacementhorsepowerweightaccelerationmodel yearoriginname 25525.14140.088.002720.015.4781 ford fairmont (man) 하나의 값에 접근 df.at[idx, '컬럼명'] df.at[397,'mpg'] 31.0 한 컬럼 전체가 반환되고 원 데이터프레임에서 drop 된다. Return item and drop from frame. Raise KeyError if not found. df.pop('mpg') 가장 큰 값 n 번째까지 리턴 df.nlargest(idx, list) >>> df.nlargest(3, ['a', 'c']) a b.. 2021. 7. 14.
파이썬 '판다스 데이터 분석' - 복사 , DataFrame.copy() DataFrame 복사에 대해 테스트 Make a copy of this object’s indices and data. DataFrame.copy(deep=True) df2 = df df3 = df[:] df3 = df.copy() # deep = True (default) df2 = df # 복사 테스트 # df2 = df df2.tail() 39444.04.097.052.002130.024.682.02.0vw pickup 39532.04.0135.084.002295.011.682.01.0dodge rampage 39628.04.0120.079.002625.018.682.01.0ford ranger 39731.04.0119.082.002720.019.482.01.0chevy s-10 398NaNNaN.. 2021. 7. 11.
파이썬 '판다스 데이터 분석' - 데이터프레임 구조(shape, info(),describe(),value_counts()..), 통계함수(mean(), median(), min(), max(), std(), corr()) 데이터셋의 내용과 구조를 개략적으로 살펴볼 수 있는 함수들과 통계함수들을 살펴볼 것이다. 데이터프레임 구조 import pandas as pd df = pd.read_csv('data/auto-mpg.csv', header=None) # 열 이름 지정 df.columns= ['mpg','cylinders','displacement','horsepower','weight', 'acceleration','model year','origin','name'] df.head() mpgcylindersdisplacementhorsepowerweightaccelerationmodel yearoriginname 018.08307.0130.03504.012.0701chevrolet chevelle malibu 115.0.. 2021. 7. 8.