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 Pclass
agg_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 대신 숫자 지정