DataFrame은 pandas라는 데이터 분석 모듈 안에 들어있는 데이터 출력 함수다.
dataFrame 안에 들어가는 데이터 자료형은 딕셔너리이다.
from pandas import DataFrame
data = {'col0':[1,2,3,4],'col1':[10,20,30,40],'col2':[100,200,300,400]}
df = DataFrame(data)
print(df)
위의 코드를 출력하면 이런식으로 나오는 게 dataFrame이다.
여기서 각 컬럼은 pandas의 Series의 형태로 들어가 있다.
print(df['col0'])
print(df['col0'][0])
이런식으로 컬럼을 꺼내보면 Series 가 나오고 그 시리즈의 인덱스를 통하여 값 하나하나를 받을 수 있다.
data = {'col0':[1,2,3],'col1':[10,20,30]}
index = ['1', '2', '3']
df = DataFrame(data, index)
print(df)
이런식으로 인덱스를 만들어서 뿌릴 수도 있다. 중요한 것은 데이터 다음 인자로 인덱스가 들어간다는 것이다.
df['insert'] = df['col1']-df['col0']
print(df)
이렇게 컬럼을 만들어서 연산을 한 뒤 추가할 수도 있다.
df = df[['insert', 'col1', 'col0']]
df
컬럼의 순서를 재정의 할 수도 있다.
df.drop(['insert'],axis=1,inplace=True)
df
컬럼을 삭제할 수도 있다.
index = ['r1', 'r2', 'r3']
cols = ['c1', 'c2']
df.index = index
df.columns = cols
df
인덱스와 컬럼을 리스트를 이용하여 재설정할 수 있다.
행을 선택하고 싶다면 loc 또는 iloc을 쓰면 된다.
loc은 우리가 설정한 인덱스를 기준으로 찾아주고 iloc은 고유 인덱스 번호(0~n)로 찾는 것이다.
행을 하나만 선택하면 Series로 출력되고 두 개 이상 선택하면 dataFrame으로 출력된다.
하지만 하나만 선택했을 때도 리스트로 넣어주면 dataFrame으로 출력된다.
이 때 행의 특정 컬럼값을 찾고 싶다면 .loc[['행이름'],['컬럼이름']] 해주면 된다.
컬럼 이름을 리스트에 넣지 않고 문자열로 넣으면 Series가 반환된다.
groupby()를 이용하여 범주를 나눠서 출력할 수도 있다.
먼저 범주로 쓸 컬럼을 정하여
groups = df.groupby('컬럼명')
그룹을 만들어준다.
이걸 토대로 다시 dataFrame을 범주별로 출력하고 싶다면 만든 그룹을 딕셔너리에 넣어주고 다시 꺼내면 된다.
df_ = dict(list(groups))
df_['범주명']
이렇게 하면 범주별로 출력할 수 있다.
데이터프레임을 아래로 합칠 때는 append와 concat을 쓸 수 있는데 이번에 append를 사용해보니 deprecated되었다고 concat으로 바꾸라고 future warning이 계속 떴다.
append가 더 빠르다고는 하지만 에러가 나니 concat을 사용해야 될 것 같다.
df = pd.concat([df1, df2])
join은 인덱스 기준으로 횡으로 붙이는 메서드이다.
특정 데이터 값을 찾는 메서드는 str.contains()가 있다.
df['컬럼명'].str.contains('찾을문자열')
대소문자 구분을 하기 때문에 contains('asdfadf', case=False) 해주면 대소문자 구분없이 찾아준다.
컬럼명을 전체적으로 한꺼번에 바꾸고 싶을 때는
df.columns = ['1','2','3','4']
위와 같이 리스트 형태로 컬럼명값을 싹 넣어주면 바뀐다.
df.rename(columns = {'1':'일 열','2':'이 열'},inplace=True)
rename()으로 위처럼 개별 컬럼명 또한 지정하여 바꿀 수 있다.
그룹화된 데이터프레임을 필터링하려면 filter()를 쓰면 된다.
람다함수를 이용하여 각 항목별로 조건과 비교할 수 있다.
'알고리즘 문제풀이 > Python3' 카테고리의 다른 글
DFS, BFS (0) | 2022.03.25 |
---|---|
[자료구조] 그래프, 트리 (0) | 2022.03.25 |
[Python3, 파이썬] 백준 1440번: 수리공 항승 (0) | 2022.03.23 |
[Python3, 파이썬] 백준 11047번 동전 0 (0) | 2022.03.23 |
[파이썬, Python3] 백준 2309번 일곱 난쟁이 (0) | 2022.03.23 |