반응형
DataFrame의 연산
import numpy as np
import pandas as pd
data= np.random.rand(10,5)
indices = list(range(101,111))
columns = ['a','b','c','d','e']
df = pd.DataFrame(data=data, columns=columns, index =indices)
print(df)
print(df.set_index('a'))
df.set_index('a',inplace=True)
print(df)
df.reset_index(inplace=True)
print(df)
df.set_index('b',inplace=True)
df.set_index('c',inplace=True)
print(df) # b를 인덱스 설정했다가, c를 인덱스 설정하면 기존의 b는 사라진다.
# 다른 콜롬을 인덱스로 올리게 되면, 기존의 행제목의 인덱스는 사라진다.
# 원래 인덱스를 유지하려면, reset_index를 먼저해주어야한다.
df = pd.DataFrame(data=data, columns=columns, index =indices)
df.reset_index(inplace=True)
print(df)
# 멀티인덱스
data = {'class' : ['a','a','a','b','b','b','c','c','c'],
'student_id' : [1,2,3,1,2,3,1,2,3],
'math_score': [60,12,43,65,78,56,98,90,12],
'eng_score' : [45,32,56,76,87,98,34,32,67]}
df = pd.DataFrame(data=data)
print(df)
df.set_index(['class','student_id'],inplace =True)
print(df)
print(df.xs('a')) # cross section a에 대해서
print(df.xs(1,level=1)) #index level 1을 기준으로 cross section
print(df.xs(1,level='student_id'))
print(df.xs('math_score',axis=1))
# 데이터 결합 (aggregation)
data = {'class' : ['a','a','a','b','b','b','c','c','c'],
'student_id' : [1,2,3,1,2,3,1,2,3],
'math_score': [60,12,43,65,78,56,98,90,12],
'eng_score' : [45,32,56,76,87,98,34,32,67]}
df = pd.DataFrame(data=data)
print(df)
print(df.groupby(by='class'))
for name, group in df.groupby(by='class'):
print(name)
print(group)
print(df.groupby(by='class').mean())
print(df.groupby(by='class',as_index=False).mean()) # class가 인덱스가 안됨
df.set_index(['class','student_id'],inplace=True)
print(df)
print(df.groupby(level=0).sum())
print(df.groupby(level=1).sum())
print(df.groupby(level='student_id').sum())
print(df.groupby('class').aggregate(np.sum)) # aggregate를 통해서 다양한 함수 활용가능
print(df.groupby('class').aggregate(lambda x : sum(x)))
print(df.groupby('class').aggregate(lambda x : 1))
print(df.groupby('class').aggregate(lambda x : print(x)))
print(df.groupby('class').aggregate(lambda x : sum(map(lambda a : a**2, x))))
반응형
'데이터 분석' 카테고리의 다른 글
DataFrame - 객체의 결합 및 sorting (0) | 2022.08.15 |
---|---|
DataFrame의 연산 - map과 apply (0) | 2022.08.15 |
dataframe의 연산 - 자료의 제거 (0) | 2022.08.14 |
Pandas dataframe의 연산 - 1 (0) | 2022.08.14 |
Pandas Dataframe 클래스 (0) | 2022.08.13 |
댓글