workSpace/PYTHON

[Pandas] 판다스 기초 상식 및 함수 정리 1 - Series, DF 기본함수

J o e 2021. 1. 12. 13:32

중요한 함수 요약

isna()
isnull()
데이터값이 NaN값이라면 True, 아니면 False를 반환.
notna()
notnull()
isna()와 반대로 데이터값이 NaN값이 라면 False, 아니면 True를 반환
read_csv()
read_excel()
read_html()
주로 데이터프레임을 만들때 사용되는 함수들이다.
encoding='utf-8' 또는 encoding='CP949'를 사용해 한글을 불러온다.
하나의 데이터 프레임은 서로다른 dtype을 갖고 있는 시리즈들이 담겨 있으며, 보통은 각 column마다 한 시리즈라고 생각하면 편하다.

각, 시리즈는 heterogeneous tabular data이다. 그래서
다양한 dtype을 갖게된다

또한, 시리즈는 ndarray타입으로 만들어져 있다.

data1 = {'name' : ['Joe', 'John', 'Peter'] } 데이터 프레임을 만들때 키값은 컬럼명이 된다.
즉 'name'이 컬럼명이며, 배열에들어있는 값들이 벨류가 된다.
DataFrame(np.random.randint(10,100,16).reshape(4,4), index=list('ABCD'), columns=['one','two','three','four']) np를 사용해서 데이터를 만들때 reshape함수를 사용하면 다차원 배열로 구성할수 있는데 주의해야할 사항은 벨류값들과 바꿀 차원의 크기가 갖아야 한다. 또한, 인덱스에서 라벨값들을 '문자'로만 지정을하고 싶으면 한번에 쓰는게 가능하지만 컬럼처럼 문자열을 사용할때는 리스트를 사용해서 넣어줘야 한다.
컬럼명을 변경하는 방법에는 2가지가 있다.
1. 전체 컬럼 수정 = df.columns=['ab','cd','ef','ge']

2. 부분 컬럼 수정 = df.rename(columns={'컬럼1':'컬럼2'}, inplace=True)
1. 전체 컬럼을 수정할 때에는 갯수를 원본과 맞춰줘야 한다는 점이있다. 그래서 개인적인 생각으로는 부분 컬럼 수정을 많이 사용 할 거 같아 보인다.

2. 부분 컬럼 수정은 rename이라는 함수를 사용해서 딕셔너리의 키값을 바꾸듯이 사용을 하는데 여기서 inplace함수를 True로 선언을 안해주면, 디폴트 값인 False가 자동선언되면서 원본데이터에 적용이 되지 않는다. 
df.T
(Transpose)
Transpose는 딥러닝을 할때 많이 사용된다고 한다.
컬럼과 인덱스의 위치를 바꿀때 사용하며
이 함수를 이용해서 좀 더 다양하게 데이터 프레임을 사용할 수 있어보인다.
1. df.iloc[:2]                           -  인덱스

2. df.loc[:2,'컬럼1':'컬럼3']         - 라벨
1. iloc 함수의 경우 index location으로, 인덱스 값에서 처음부터 2개반환한다.

2. loc 함수의 경우 처음부터 2개를 반환하면서, 컬럼값 컬럼1부터 컬럼3까지 반환한다.
* 스칼라 값 가져오기.
1. df.iat[2,2]                          - 인덱스

2. df.at[2, '컬럼1']                   - 라벨 
1. iat 함수의 경우 Index at으로, 2번째 인덱스 2번째 컬럼의 값을 반환한다.

2. at 함수의 경우 라벨을 입력해서 가져오며, 2라는 라벨에 있는 컬럼1이라는 라벨의 컬럼명에 해당하는 위치의 값을 을 반환한다.
1. df['컬럼4'] = np.nan

2. df.loc[4] = np.nan
1.컬럼명을 '컬럼4'로 갖으며 NaN값을 넣는다.

2. 인덱스명을 '4'로 갖으며 NaN값을 넣는다.
1. df.drop('컬럼4', axis=1, inplace=True)

2. df.drop(4, inplace=True)
1. 컬럼명 '컬럼4'를 삭제하는 방법인데, axis은 축을 말한다. 기본값은 axis=0인데, 0은 (->) 행방향을 말한다 그리고 axis=1은 열방향을 말하므로, 컬럼값들이 대상이 되는걸 알 수 있다.

2. axis를 안써주면 기본값이므로, 인덱스명'4'의 값들이 drop함수에 의해서 삭제 된다.
1. df.dropna()

2. df.fillna(0)
1. dropna()의 기본값은 dropna(how = any)이다. how는 속성을 말하는데 any를 선언해주면, NaN값이 하나라도 있는 모든 행을 삭제한다. 추가로 - (how = all),(thresh=3)이 있다. all은 모든값이 NaN인 행만 삭제한다.
thresh=3 은 값이 NaN값이 3개 이상인 값들을 반환한다.

2.  파라메터값으로 0 을 넣어주면, NaN의 값이 있는 자리에 '0'이라는 문자를 채워준다
df.fillna(df.mean())과 같이 함수를 넣어 그 시리즈의 평균 값을 넣을수도 있다.
df.fillna(method='ffill') 은 시리즈에서 1번 인덱스의 값으로 NaN값에 채운다는 의미이다.
1. df.sort_index(axis=1, ascending=False)

2. df.sort_values(by=['컬럼1'], ascending=False).head(10)
2-1. df.sort_values(by=['컬럼1'], ascending=False).head(10).plot(kind='bar')
1. 인덱스를 정렬할때 사용하는 함수인데, axis=1을 주어서 열방향으로 맞추고 ascending=True가 기본값인데 False로 해주면 내림차순으로 정렬된다. 문자는 A-Z, ㄱ-ㅎ순으로 나열된다.(올림차순일경우)

2. sorting을 할때에 주로 많이 사용하는 함수이며,
컬럼명이 '컬럼1'이며, 내림차순으로정렬하였을때, 가장상위항목 10가지를 보여준다. 자주사용하게 될것으로 보인다.
.plot(kind='bar')함수를 추가해서 'bar'차트로 출력할수 있다.
df['컬럼1'].unique() unique함수를 사용해서 '컬럼1'의 시리즈에 있는 값들을 1개씩만 보여준다.
df['컬럼1'].value_counts() '컬럼1'의 컬럼에있는 벨류값들의 갯수를 다 더해서 알려준다.