준비물
import pandas as pd
import numpy as np
Viewing Data
df.head()
df.tail()
df.index
df.columns
df.values
df.describe()
df.sort_values(by='b") # df.sort_values(by='B', ascending=False)
b 라는 특정 컬럼의 value를 기준으로 정렬
Selection
df['A']
df[['A','C']] #대괄호 두개에 유의
#Slicing rows
df[0:3]
#Select by label(s)
df.loc (라벨값 기반의 2차원 인덱싱)
df.loc[행 인덱싱값]
df.loc[행 인덱싱값, 열 인덱싱값]
예시)
df.loc[date[0]]
df.loc[:,['A','B']] #열 인덱싱
df.loc["B":"C"] #df["B":"C"] 랑 동일
df.loc[df.A> 10] # def select_rows(df): return df.A>10 등 함수나 마스크 사용가능
인덱서가 없는 경우에 사용했던 라벨 인덱싱이나 라벨 리스트 인덱싱은 불가능하다.
#Selection by position
df.iloc (순서를 나타내는 정수 기반의 2차원 인덱싱)
iloc 인덱서는 loc 인덱서와 반대로 라벨이 아니라 순서를 나타내는 정수(integer) 인덱스만 받는다.
다른 사항은 loc 인덱서와 같다.
예시)
df.iloc[:2, 2]
df.iloc[0,-2:]
df.iloc[2:3,1:3]
#Access a single value
df.at (at: 라벨값 기반의 2차원 인덱싱 (한개의 스칼라 값만 찾는다))
df.iat (순서를 나타내는 정수 기반의 2차원 인덱싱 (한개의 스칼라 값만 찾는다))
특징은 인덱싱 속도가 매우 빠르다.
#Boolean indexing
df.A > 0
df[df.A >0]
df[df['E'].isin(['뺙뺙','칙칙폭폭'])]
#Insert a column from series
s1=pd.Series([아무배열], index=pd.date_range('20130102', period=6))
df['F']=s1
#date_range를 이용하여 하루간격으로 2013-01-01~2013-01-06까지 index가 붙는다
#아무배열 예를 들면 [1,2,3,4,5,6]
#이러면 F라는 새 컬럼이 생긴다.
#Conform to a new index (기존 존재하는 데이터로 새로운 DF 만들기)
df1 = df.reindex(index=dates[0:4], columns=list(df.columns) + ['E'])
df1.loc[dates[0]:dates[1],'E'] = 1
#기존 df 에서 2013-01-01~04에서의 값을 확인하고 싶을 때, ['E']는 그냥 비어있는 column
#Detect missing values
pd.isnull(df1)
#Remove missing values
df1.dropna(how = 'any') # remove row(s) or column(s) if any NA values are present
df1.dropna(how='all') # remove row(s) or column(s) if all values are NA
Missing value를 Remove 하는 Data_Cleaning 은 다음 포스트 참조
'대학교 > 데이터분석개론' 카테고리의 다른 글
5-4.Python Pandas_DataHandling (0) | 2020.06.12 |
---|---|
5-3.Python Pandas_DataCleaning (0) | 2020.06.12 |
5-1.Python Pandas_Series (0) | 2020.06.12 |
4.Pyplot Visualization (0) | 2020.06.08 |
3.Python Numpy (0) | 2020.06.08 |