Subset Observation
데이터 시각화를 위해서 상관관계가 있는 데이터들을 가져오는 기법이다.
열(column) 단위 읽기
df['Name']
# 하나의 열만 불러오는 방법이다.
df[['Name', 'Score']]
# 두 개 이상의 열을 불러올 수도 있다.
#tip
df.loc[:,['Name','Score','Age']]
# 맨마지막꺼 하나 빼고 나머지 칼럼을 다 불러올 때,
df.iloc[:,-1]
행으로만 가져오는 방법도 따로 있다. 가장 마지막 코드처럼 df.loc 메소드를 사용하여, 원하는 행을 슬라이싱 하는 방법도 있다.
행(row) 단위 읽기
df.loc['row1']
df.loc[['row2', 'row1']]
df.loc['row2', 'Name'] #row2 행과 'Name'열의 칼럼의 데이터를 불러오라.
'S2'
Summarizing Data
df.head(1) : 데이터의 맨 앞을 보는 명령어 () 기본값은 5줄
df.tail() : 데이터의 맨 뒤를 보는 명령어 () 기본값은 5줄
df.info() : 데이터의 자료형, 각 칼럼명, 비어있지 않은 자료의 개수, 용량 등을 보여준다.
df.describe(include = 'all') 해당 자료에 대한 기본적 산술통계를 보여준다.
df.isnull() : 없는 값을 찾는 메소드이다.
df.value_counts() : 값이 다 차 있는 애들을 보여준다.
Logical Operation
조건에 맞는 데이터프레임을 출력해낼 수 있다.
df[df['Age']>22]
혹은 Logic Operation을 사용하여, 조건에 맞는 값을 새로운 열에 추가할 수도 있다.
df.loc[df['Score']<80, Result] = 'Fail'
Exporting to excel
판다스의 장점은 다른 파일로 호환성이 좋다는 것이다. 만약에 엑셀파일로 저장하고 싶으면,
df.to_csv('test.csv)
불러오고 싶을 때는 아래와 같은 코드를 입력하면 된다. 군더더기 없이 깔끔하게 사용하려면,
index_col=0을 사용하면 좋다.
pd.read_csv('test.csv, index_col=0)
하지만 엑셀파일을 파이썬에서 그대로 사용하려면 파이썬에서 변수명을 지정해서 사용해야야 한다.
df_import = pd.read_csv('test1.csv', index_col=0)
File I/O
파일을 엑셀 파일로 보내고 싶으면,
df.to_excel('data.xlsx')
df.to_csv('data.txt')
텍스트 파일 방법으로도 만들 수 있다. 참고로 csv 파일은 텍스트 파일로도 호환이 가능하다.
Groupby Analysis
df.groupby("묶음의 기준이 되는 칼럼명")["적용받는 칼럼"].적용받는 연산()
# 만약에 Class와 스코어 칼럼에 대한 값이 표기된 데이터프레임이 있다고 가정하자.
df.groupby('Class').mean()
# 그러면 Class 칼럼에 관한 나이나 점수에 관한 평균 값이 도출될 것이다.
df.groupby('Class')['Score'].mean()
# 아래와 같이 평균값을 적용받는 칼럼을 설정할 수도 있다.
좀 더 예쁘게 출력하려면, 적용받는 칼럼 리스트에 한번 더 대괄호를 쳐주면 좋다.
df_import2.groupby('반')[['테스트점수']].mean()
※ replace 메소드는 NaN 값을 0으로 바꿔줄 수 있는 유용한 메소드이다.
df1 = df.replace(np.nan, 0)
Melt
Melt 메소드는 데이터를 보기 좋게 정렬하는데 유용하다.
녹여서 다시 붙힌다는 의미로 시각화에서 많이 사용되는 기법이다.
pandas.melt(frame, id_vars=None, value_vars=None, var_name=None, value_name='value', col_level=None, ignore_index=True)
예시)
import pandas as pd
df1=pd.DataFrame({'store':['Costco','Costco','Costco','Lotte Mart','Lotte Mart','Lotte Mart',"E-mart","E-mart","E-mart"],
'product':['Potato','Onion','Cucumber','Potato','Onion','Cucumber','Potato','Onion','Cucumber'],
'price':[3000,1600,2600,3200,1200,2100,2000,2300,3000],
'quantity':[25,31,57,32,36,21,46,25,9]})
df2.melt(id_vars=['price', 'quantity'])
df2.melt(id_vars=['product','store'], var_name='product_info', value_name='product_value')
이런식으로 여러 데이터 조합에서 집중적으로 볼 항목들을 사용자가 임의적으로 지정할 수 있도록 도와준다.
멜트는 피벗 테이블 등과 같이 많이 사용된다.
데이터프레임 조작
데이터프레임에 칼럼이 존재하지 않을 때 새로 생성할 수 있다.
df['지역'] = '서울'
데이터를 조작할 때, 특정한 조건을 두어 데이터프레임에 집어넣을 수도 있다.
df.loc[df['테스트점수'] < 70, '상태'] = '추가학습'
df.loc[df['테스트점수'] >= 70, '상태'] = '잘하고 있음'
다중조건
판다스에서는 and, or, not 연산자를 &(앰퍼샌드), ㅣ(파이프라인), ~(틸드)를 사용한다.
# 점수가 75점 이상 맞은 사람 중에 장미나 개나리반 사람을 검색해주세요
df[(df.테스트점수 >= 75) & ((df.반 == '장미') | (df.반 == '개나리'))] # or, and, not
# 점수가 75점 이상 맞은 사람 중에 장미나 개나리반이 아닌 사람을 검색해주세요
df[(df.테스트점수 >= 75) & (~(df.반 == '장미') | ~(df.반 == '개나리'))]
'플레이데이터 빅데이터 부트캠프 12기 > Python' 카테고리의 다른 글
[플레이데이터 빅데이터 부트캠프]Python 데이터 시각화(1) (0) | 2022.07.22 |
---|---|
[플레이데이터 빅데이터 부트캠프]Python Pandas(3) (0) | 2022.07.21 |
[플레이데이터 빅데이터 부트캠프]Python Pandas(1) (0) | 2022.07.21 |
[플레이데이터 빅데이터 부트캠프]Python 3차원 배열 (0) | 2022.07.20 |
[플레이데이터 빅데이터 부트캠프]Python list vs ndarray (0) | 2022.07.19 |