DataFrame.info(verbose=None, buf=None, max_cols=None, memory_usage=None, show_counts=None, null_counts=None)
DataFrame의 type, RangeIndex, column name, values Dtype, non-null Count등의 정보를 반환한다.
DataFrame.head(n=5)
DataFrame에서 첫 번째부터 n번째 까지의 데이터를 반환한다. Default n은 5이다.
DataFrame.tail(n=5)
DataFrame에서 n부터 n-4번째 까지의 데이터를 반환한다. Default n은 5이다.
DataFrame.sample(n=None, frac=None, replace=False, weights=None, random_state=None, axis=None)
DataFrame에서 무작위로 n개의 index를 반환한다.
DataFrame[column_name]
column_name
에 해당하는 index을 가져온다.
DataFrame.column_name
한편, 위와 같이 attribute
에 접근하는 것 처럼 .
(dot)을 활용해 column_name에 접근할 수 있다.
DataFrame[start_index_n, end_index_n]
DataFrame[start_index_name, end_index_name]
start_index_n
end_index_n
에 해당하는 index을 가져온다.
DataFrame[column_name][start_index_n, end_index_n]
DataFrame[column_name][start_index_name, end_index_name]
column_name
에 해당하는 열에서start_index_name
end_index_name
에 해당하는 index를 가져온다. 만약 index에 중복된 값이 있다면 KeyError: "Cannot get left slice bound for non-unique label
Error가 발생한다.
property DataFrame.values: numpy.ndarray
DataFrame의 value를 반환한다.
DataFrame.index: Index
DataFrame의 index를 반환한다. pandas.index
와 다르단 것에 주의하자.
DataFrame.columns: Index
DataFrame의 columns를 반환한다.
property DataFrame.loc: pandas.core.indexing._LocIndexer
index와 column의 label(명칭)을 통해 값을 가져온다.
# index_label에 위치한 값을 Series로 반환한다. >>> df.loc[<index_label>] >>> type(df.loc[<index_label>]) pandas.core.series.Series # index_label과 column_label에 위치한 값을 반환한다. >>> df.loc[<index_label>, <column_label>]
property DataFrame.iloc: pandas.core.indexing._iLocIndexer
index의 위치를 통해 값을 가져온다.(integer-location based indexing)
# index_n에 위치한 값을 Series로 반환한다. >>> df.iloc[<index_n>] >>> type(df.iloc[<index_n>]) pandas.core.series.Series # index_n에 위치한 값을 DataFrame으로 반환한다. >>> df.iloc[[<index_n>]] >>> type(df.iloc[[<index_n>]]) pandas.core.frame.DataFrame # Slicing을 통해, 해당 범위의 값을 DataFrame으로 반환한다. >>> df.iloc[<start_n>:<end_n>] # Fancy indexing을 통해, 해당 index의 값을 DataFrame으로 반환한다. >>> df.iloc[[index_1, index_2, index_3...]] # lambda 표현식을 통해, 참인 값을 반환한다. # 짝수 index를 반환한다. >>> df.iloc[lambda x: x.index % 2 == 0]
property DataFrame.at: pandas.core.indexing._AtIndexer
# index_label과 column_label에 위치한 값을 반환한다. >>> df.at[<index_label>, <column_label>]
index와 column의 label(명칭)을 통해 하나의 값을 가져온다.
property DataFrame.iat: pandas.core.indexing._iAtIndexer
위치(integer position)을 통해 하나의 값을 가져온다.
# index_n과 column_n에 위치한 값을 반환한다. >>> df.at[<index_n>, <column_n>]
DataFrame에 비교연산자를 사용하면 True
or False
값을 반환한다.
>>> pd.read_csv("https://raw.githubusercontent.com/mwaskom/seaborn-data/master/tips.csv") # URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1129)>가 발생하면, 아래의 구문을 실행한다. # import ssl # ssl._create_default_https_context = ssl._create_unverified_context >>> data["tip"] > 5 0 False 1 False 2 False 3 False 4 False ... 239 True 240 False 241 False 242 False 243 False Name: tip, Length: 244, dtype: bool >>> data[data["tip"] > 5][["total_bill", "tip"]] total_bill tip 23 39.42 7.58 44 30.40 5.60 47 32.40 6.00 52 34.81 5.20 59 48.27 6.73 85 34.83 5.17 88 24.71 5.85 116 29.93 5.07 141 34.30 6.70 155 29.85 5.14 170 50.81 10.00 172 7.25 5.15 181 23.33 5.65 183 23.17 6.50 211 25.89 5.16 212 48.33 9.00 214 28.17 6.50 239 29.03 5.92 # 위의 결괏값과 같다. >>> data.loc[data["tip"] > 5, ["total_bill", "tip"]] >>> data[data["tip"] > 5].loc[:, "total_bill":"tip"]
property DataFrame.size: int
DataFrame의 총 values의 개수를 반환한다.
Series.unique()
Series에서 중복을 제거한 유일한 값을 가져온다. 즉 Series에 포함된 값을 반환한다. 따라서 수정하거나 가져온 데이터의 고유 값을 확인하는데 사용한다.
한편, unique는 DataFrame에는 사용할 수 없음에 주의하자.
DataFrame.value_counts(subset=None, normalize=False, sort=True, ascending=False)
unique한 값과 그 개수를 반환한다. 그런데 DataFrame에서 사용하게 되면 여러 columns로 구성된 index를 하나로 보고 unique한 값을 찾기 때문에 사실상 의미가 없다. 따라서 Series에서만 사용하는 것이 바람직하다.
DataFrame.rename(mapper=None,
index=None,
columns=None,
axis=None,
copy=True,
inplace=False,
level=None,
errors='ignore')
rename은 아래와 같이 세가지 형태로 사용한다.
(index=index_mapper, columns=columns_mapper, ...)
(mapper, axis={'index', 'columns'}, ...)
(mapper, axis={'0', '1'}, ...)
>>> data.rename(index={1: 999}, columns={"size": "size_"}).loc[999] total_bill 10.34 tip 1.66 sex Male smoker No day Sun time Dinner size_ 3 Name: 999, dtype: object >>> data.rename(mapper={"sex": "gender"}, axis="columns").loc[0] total_bill 16.99 tip 1.01 gender Female smoker No day Sun time Dinner size 2 Name: 0, dtype: object # 위와 결괏값이 같다. >>> data.rename(mapper={"sex": "gender"}, axis=1).loc[0]
DataFrame.interpolate(method='linear',
axis=0,
limit=None,
inplace=False,
limit_direction=None,
limit_area=None,
downcast=None,
**kwargs
)
결측값을 선형 기반으로 채운다.
method
에는 여러 방법이 존재하나, MultiIndex에서는 linear
만 지원함DataFrame.fillna(value=None,
method=None,
axis=None,
inplace=False,
limit=None,
downcast=None
)
결측값을 value
값으로 채운다.
DataFrame.describe(percentiles=None, include=None, exclude=None, datetime_is_numeric=False)
count, mean, std, min, 25%, 50%, 75%, max에 해당하는 통계 분석값을 반환한다. 단, 숫자 자료형으로 이루어진 colums만 분석할 수 있다.
count
mean
max
min
std
########
추가
##########3
DataFrame.values: ndarray 형태로 반환함
DataFrame.values.tolist(): 리스트 형태로 반환함
DataFrame.values.to_dict(): dictionary 형태로 반환함
pandas.crosstab(index, # index columns에 올 data
columns, # Feature columns에 올 data
values=None, # aggfunc와 함께 사용하여 value(표의 값)을 aggfunc을 적용하는 것. groupby와 유사함.
aggfunc=None, # sum, count, mean
rownames=None, # index columns 명
colnames=None, # feature columns 명
margins=False, # 각 행렬의 총합
margins_name='All',
dropna=True, # 결측치를 drop함
normalize=False # 전체 값에서 차지하는 비율을 표시함
)
import pandas as pd a = np.array(["foo", "foo", "foo", "foo", "bar", "bar", "bar", "bar", "foo", "foo", "foo"], dtype=object) b = np.array(["one", "one", "one", "two", "one", "one", "one", "two", "two", "two", "one"], dtype=object) c = np.array(["dull", "dull", "shiny", "dull", "dull", "shiny", "shiny", "dull", "shiny", "shiny", "shiny"], dtype=object) print(pd.crosstab(index=a, columns=[b, c], ) ) # col_0 one two # col_1 dull shiny dull shiny # row_0 # bar 1 2 1 0 # foo 2 2 1 2 print(pd.crosstab(index=a, columns=[b, c], rownames=['a'], colnames=['b', 'c'] ) ) # b one two # c dull shiny dull shiny # a # bar 1 2 1 0 # foo 2 2 1 2 print(pd.crosstab(index=a, columns=[b, c], rownames=['a'], colnames=['b', 'c'], margins=True ) ) # b one two All # c dull shiny dull shiny # a # bar 1 2 1 0 4 # foo 2 2 1 2 7 # All 3 4 2 2 11 print(pd.crosstab(index=a, columns=[b, c], rownames=['a'], colnames=['b', 'c'], margins=True, normalize="all" ) ) # b one two All # c dull shiny dull shiny # a # bar 0.090909 0.181818 0.090909 0.000000 0.363636 # foo 0.181818 0.181818 0.090909 0.181818 0.636364 # All 0.272727 0.363636 0.181818 0.181818 1.000000