*pandas -> Python계의 엑셀!
- 구조화된 데이터의 처리를 지원하는 Python 라이브러리.
- panel data -> pandas
- 고성능 array계산 라이브러리인 numpy와 통합하여, 강력한 "스프레드시트"처리 기능을 제공
- 인덱싱, 연산용 함수, 전처리 함수 등을 제공
- 데이터 처리 및 통계 분석을 위해 사용
*Data loading
- ex1) df_data = pd.read_csv(data_url , sep='\s+' , header = None)
- #csv 타입 데이터 로드, separate은 regex로 빈공간으로 지정하고, Column은 없음
- ex2) df_data.head() # 첫 5줄 출력 , integer로 몇 줄 출력할지 넣어줄 수 있음
*Series
- Data Table 전체를 포함하는 Object를 DataFrame이라 함
- DataFrame중 하나의 Column에 해당하는 데이터의 모음 Object를 Series라 함
- numpy와 큰 차이점은 index를 문자로도 지정해줄수 있음
- Subclass of ndarray
- Duplicates are possible
- dict로 데이터를 넣으면 key값이 index가 됨
- ex1) dict_data_1 = {"a":1 , "b":2, "c" :3, "d":4, "e":5}
- indexes = ["a", "b", "c", "d", "e", "f", "g", "h"]
- series_obj_1 = Series(dict_data_1, index=indexes) #index 값을 기준으로 series 생성
- print(series_obj_1)
*DataFrame
- Series를 모아서 만든 DataTable = 기본 2차원
- Series와 동일하게 index 값을 기준으로 데이터 생성
- Column을 지정하여 테이블 생성 가능
*DataFrame indexing
- loc - index location #index의 값을 넣어줘야함 ex) index가 문자면 문자를 넣어줌
- iloc - index position #index의 위치를 넣어줘야함
*DataFrame handling
- column에 새로운 데이터 할당 가능
- ex1) df.debt = df.age > 40 #df라는 dataframe에 debt라는 새로운 column을 boolean 형태로 넣어줌
- df.T -> transpose
- df.values -> 값 출력
- df.to_csv() -> csv 변환
- del df["debt"] or df.drop("debt, axis=1) -> 'debt' column 삭제 #del은 메모리에서 삭제, drop은 df에 변화X
*Selection
- df["account"].head(3) #한개의 column선택시
- df[["account", "street", "state"]].head(3) #1개 이상의 column 선택
- df[:3] #index번호를 넣어주기도 함 => 헷갈릴수도? , index가 문자열이면 데이터가 안뽑힘
- df[[0,1,2]] #index를 list형태로 넣어주기도 함
- boolean index 가능
- df.index = df["account"] #index 변경 가능
*Data selection : basic, loc, iloc
- basic : df[["name", "street"]][:2] #Column과 index number
- loc : df.loc[[211829,3290563], ["name", "street"]] #Column과 index number
- iloc : df.iloc[:2,:2] #Column number와 index number
*Drop
- df.drop([0,1,2,3]) #한 개 이상의 index number로 drop
- df.drop("city" , axis=1) #axis 지정으로 축을 기준으로 drop -> column 중에 "city"
- df.drop("city" , axis=1 , inplace=True) # inplace=True로 설정하면 df가 업데이트가 됨
*Series operation
- index 기준으로 연산수행 겹치는 index가 없을경우 NaN값 반환
*DataFrame operation
- column과 index를 모두 고려하여 겹치는 경우가 없으면 NaN값 반환
- df1.add(df2, fill_value=0) # fill_value=0 은 겹치는 경우가 없을때 0값을 더해서 반환
- df.add(s2, axis=0) # Series + dataframe 수행할땐 그냥 operation을 수행하지 않고, axis를 지정. broadcasting
*lambda , map ,apply
- map, replace를 활용하여 series를 업데이트 가능
- apply : map과 달리, series 전체에 해당 함수 적용
- ex1) df_info = df[["earn" , "height", "age"]]
- f = lambda x : x.max() - x.min()
- df_info.apply(f) # 각 column 별로 결과값 반환. sum, mena, std 등 내장 연산 함수 사용 가능
- applymap : series단위가 아닌 모든 element 단위로 함수를 적용함
- ex2) f = lambda x : x//2
- df_info.applymap(f).head(5)
*pandas built-in functions
- describe : Numeric type 데이터의 요약 정보를 보여줌
- unique : series data의 유일한 값을 list를 반환함
- sum : 기본적인 column 또는 row 값의 연산을 지원
- isunall : column 또는 row 값의 NaN index 반환
- sort_values : column 값을 기준으로 데이터를 sorting
- Correlation & Covariance : 상관계수와 공분산을 구하는 함수 (corr , cov , corrwith)
*Groupby 1
- SQL groupby 명령어와 같음
- split -> apply -> combine
- ex1) df.groupby("Team")["Points"].sum() #Team 컬럼 기준으로 Points의 값들을 다 합침
- ex2) df.groupby(["Team", "Year"])["Points"].sum() #Team 컬럼 기준으로 먼저 묶고, Year 컬럼 기준으로 묶음
*Hierarchical index
- Groupby 명령의 결과물도 결국은 dataframe
- 두 개의 column으로 groupby를 할 경우, index가 두개 생성
- unstack() , reset_index() # 그룹 데이터를 matrix로 풀어줌
- sum(level = ) # Series data 이므로 level 지정 연산 가능
*Groupby 2
- Groupby에 의해 Split된 상태를 추출 가능함
- ex) grouped = df.groupby("Team")
for name, group in grouped:
print(name)
print(group) - get_group("Devils") : 특정 key값을 가진 그룹의 정보만 추출 가능
- 추출된 group 정보에는 세 가지 유형의 apply가 가능
'부스트캠프 AI Tech > [Week1] Python' 카테고리의 다른 글
[Week1] Python - numpy (0) | 2021.08.06 |
---|---|
[Week1] Python - pythonic code (0) | 2021.08.04 |
[Week1] Python - Data Structure (0) | 2021.08.04 |