
read_csv() : ,, read_table() : \t, read_fwf() : 고정길이 파일value_counts(): 해당 칼럼 값의 유형과 건수 확인 (Series 객체에만 정의)describe() : agg류 연산 보여줌values()로 얻은 ndarray에 또 다시 tolist() 호출values()to_dict() 호출 ⇒ dict의 value 값이 또다시 idx:val인 이중 dict으로 나옴[] )로 나옴drop('삭제할 칼럼명', axis=0, inplace=False)df.drop([0,1,2], axis=0)df.index: index 추출print(type(indexes)) print(type(indexes.values)) print(indexes.values.shape) print(indexes[:5].values) print(indexes.values[:5]) print(indexes[6])indexes[0] = 5 : error ⇒ 한번 만들어진 Index 객체는 함부로 변경할 수 없음reset_index()rest_index() 를 적용하면, Series가 아닌, DataFrame으로 반환됨 ⇒ 기존 인덱스가 칼럼으로 추가 되어, 칼럼이 2개가 됨df.index = df.index+1 으로 새로운 index값 생성해서, index 재할당이 가능3.3.1. [ ] 연산자 ⇒ 단일 컬럼 데이터 추출 : df['col'], 여러 컬럼 데이터 추출 : df[['col_1', ‘col_2’]]
df[0]df[0:2]3.3.2. column [명칭] 기반 인덱싱과 column [위치] 기반 인덱싱의 구분
3.3.2.1. column [명칭] 기반 인덱싱 : df.loc[시작점:종료점] ⇒ 여기서 인덱싱 시작점과 종료점 모두 (-1 없이) 다 포함(명칭 기반이기에)
loc[]: 명칭 기반 인덱싱으로 행은 index값, 열은 column명 입력df.loc['one', 'Year']df.loc[1, 'Year']loc['A':'Z', 'Name'] : 명칭의 슬라이싱도 가능df.loc[1:2, 'Name' : 'Year']df.loc[1:2, ['Name', 'Year']]df.loc[[1,2], ['Name', 'Year']]3.3.2.2. column [위치] 기반 인덱싱 : df.iloc[행, 렬] ⇒ 여기서는 일반적인 슬라이싱 처럼 (시작, 종료) ⇒ (시작, 종료-1)
iloc[ 0, 1:3] : 처럼 슬라이싱도 가능iloc[]: 위치 기반 인덱싱으로 index, column 의 위치를 입력df.iloc[0,1] 만약 df.iloc['A', 0] or df.iloc[0, 'A'] 등 명칭을 입력하면 error3.3.3. 불린 인덱싱 , 예시) (row조건) ‘Age’가 60 초과인 row에서, (컬럼) ‘Name’ 과 ‘Age’ 인덱싱
titanic_df[titanic_df[’Age’] > 60][['Name', 'Age']] : “인덱싱 ” df[조건(에맞는row)][칼럼명]titanic_df.loc[titanic_df['Age'] > 60.0 , ['Name','Age']] : “명칭 loc“ df.loc[조건(에 맞는row)[칼럼명]titanic_df[ (titanic_df['Age'] > 60) & (titanic_df['Pclass']==1) & (titanic_df['Sex']=='female') ] : 불린으로 row 조건걸기titanic_df[ (titanic_df['Age'] > 60) & (titanic_df['Pclass']==1) & (titanic_df['Sex']=='female') ] ['Name'] : col 명 인덱싱titanic_df.loc[ (titanic_df['Age'] > 60) & (titanic_df['Pclass']==1) & (titanic_df['Sex']=='female') ] : loc로 row에 조건걸기titanic_df.loc[ (titanic_df['Age'] > 60) & (titanic_df['Pclass']==1) & (titanic_df['Sex']=='female') ] ['Name] : col 명 인덱싱cond1 = titanic_df['Age'] > 60 cond2 = titanic_df['Pclass']==1 cond3 = titanic_df['Sex']=='female' titanic_df[ cond1 & cond2 & cond3]df.loc[조건 , [cols]]df[조건][[cols]]3.3.4. 정렬, Aggregation함수, GroupBy 적용
sort_values()sort_values(by=['칼럼명'], ascending=True, inplace=False)df.count()df[['Age', 'Fare']].mean()df['Age'].mean() : Series에 mean 적용titanic_df.groupby(by='Pclass') : 타입은 DataFrameGroupBy로 객체만 반환titanic_df.groupby('Pclass')['Age'].count() : 이 객체에 다음과 같이 agg 함수를 적용해야함titanic_df.groupby('Pclass')['Age'].agg([max, min]) : agg를 호출해서 여러개 적용도 가능Select max(Age), sum(SibSP), avg(Fare) From titanic_table group by Pclassagg_format={'Age':'max', 'SibSp':'sum', 'Fare':'mean'} titanic_df.groupby('Pclass').agg(agg_format)titanic_df.groupby('Pclass').agg({'Age':'max', 'SibSp':'sum', 'Fare':'mean'})isna(): NaN 결손 데이터 여부 확인 (boolean)isna().sum() : 각 col별로 결손 데이터 확인하기fillna('대체할 값'): NaN 값을 대체하여 Missing 데이터 처리titanic_df['Age'] = titanic_df['Age'].fillna(titanic_df['Age'].mean()) titanic_df['Embarked'] = titanic_df['Embarked'].fillna('S') titanic_df.isna().sum()apply(lambda x: 식) : apply lambda식으로 데이터 가공titanic_df['Name_len']= titanic_df['Name'].apply(lambda x : len(x))titanic_df['Child_Adult'] = titanic_df['Age'].apply(lambda x : 'Child' if x <=15 else 'Adult' )titanic_df['Age_cat'] = titanic_df['Age'].apply(lambda x : 'Child' if x<=15 else ('Adult' if x <= 60 else 'Elderly'))pd.options.display.max_rows = None : 전체 보기, None 대신 숫자 지정pd.options.display.max_columns = None : 전체 보기, None 대신 숫자 지정