1 분 소요

pandas 두번째

# 항 개수 세기
df.count()
# 그래프 그리기
df.plot()

.

# 위에서 아래로 (행방향) 정렬
df.stack()
# 왼쪽에서 오른쪽으로 (열방향) 정렬
df.unstack()
#index 취소
df.groupby("month", as_index = False)

.

# 모든 column 앞에 "duration_"추가하기
grouped.add_prefix("duration_")

.

# 인덱스 0부터 다시 새로 초기화 생성
df.reset_index()

.

여러가지 데이터를 handling 하는 과정

Groupby

.

df.groupby(묶음 기준 칼럼)[적용되는 칼럼].연산()

#ex)
df.groupby(["Team","year"])["Points"].sum()

.

groupby 추출

grouped = df.groupby("Team")

for name, group in grouped:
  print(name)
  print(group)

tuple 형태로 그룹의 key, value값 추출됨

groupby 다시 dataframe으로 보려면 .unstack()

.

특정 key값 가진 그룹의 정보만 추출가능

grouped.get_group

.

groupby apply 3유형

aggregation

요약된 통계정보를 추출해 줌

grouped.agg(sum)

grouped.agg(np.mean)

grouped['points'].agg([np.sum,np.mean,np.std])
#전체 index마다 apply하는 함수
df.describe()

.

transformation

해당 정보 변환해 줌

group 별로 연산할 때, 각각의 값에 영향을 줄 수 있게 한다.

# 숫자 제곱하는 transform
score = lambda x: (x**2)
grouped.transform(score)
# group의 max값
score = lambda x: (x.max())
grouped.transform(score)

.

filtration

특정 정보를 제거하여 보여줌 (검색할 때 사용)

#그룹별로 3개 이상인 그룹만 나타내기
df.groupby('Team').filter(lambda x: len(x) >=3)

.

hierarchical index

multi index에서 사용

h_index.index

h_index["Devils":"kings"]

h_index.unstack()

h_index.reset_index()

.

index - swaplevel

#index level 을 변경할 수 있음
h_index.swaplevel()

h_index.swaplevel().sortlevel(0)

.

sort

#지정 index에 따라 sort 
h_index.sortlevel(1)

#value 에 따라 sort
h_index.sort_values

.

기본 연산 수행도 가능

h_index.sum(level=1)
h_index.std(level=0)

.

Pivot Table & Crosstab

.

Pivot Table

df.pivot_table(["duration"],
              index = [df.month, df.item],
              columns = df.network,
              aggfunc = "sum",
              fill_value = 0)

Crosstab

pd.crosstab(index = ,
           columns = ,
           values = ,
           aggfunc = "first").fillna(0)

Merge & Concat

merge

두 dataframe 합병

# subject로 두 datafram 합침
pd.merge(df_a, df_b, on= "subject")

# 두 data의 column이름이 다를때
pd.merge(df_a, df_b, left_on = ["subject_a", "subject_b"])
# 왼쪽에 있는 column을 기준으로 합침
pd.merge(df_a, df_b, on = "subjet",
        how = "left")

.

concat

#세로로 붙음
df_new = pd.concat([df_a,df_b])
#옆으로 붙음
df_new = pd.concat([df_a,df_b],axis = 1)

.

persistence

data loading 시 db connection 기능을 제공

import sqlite3

#database 연결 코드
conn = sqlite3.connect("./data/flights.db")
cur = conn.cursor()
cur.execute("select * from airlines limit 5;")
results = cur.fetchall()
results

xls(엑셀) 파일로 저장 가능

!conda install --y XlsxWriter
writer = pd.ExcelWriter("./data/df.xlsx",engine = "xlswriter")
df.to_excel(writer, sheet_name = "sheet1")

피클 형태로 저장

df.to_pickle("./data/df.pickle")

댓글남기기