Aiffel_learning/Data_analysis
2. pandas 메소드 한눈에!
이유29
2024. 6. 6. 20:53
한눈에 보기 편하려고 정리한 글 :)
메소드(코드) | 설명 |
데이터를 dataframe, series화 하기 | |
pd.DataFrame(데이터) | 데이터를 dataframe으로 변경 |
pd.Series(데이터) | 데이터를 series으로 변경 |
파일 불러오기 | |
data = pd.read_csv('csv파일') | csv 파일 불러오기 |
data = pd.read_excel('xlsx 파일') | 엑셀파일 불러오기 |
파일 내보내기 | |
df.to_csv('output.csv', index=False) | csv 파일 내보내기 |
데이터 병합하기 | |
concat() | 세로 or 가로로 다 각각 이어붙여짐 (인덱스도 그대로 각각, 같은 column만 합쳐짐) |
merge(자료, on=suffix칼럼, how=join방식) |
두 개 이상의 데이터 프레임을 특정 공통 열 또는 인덱스를 기준으로 병합 (자동으로 공통되는 부분을 파악함) on : 기준이 되는 key 값 지정 / how = 'inner', 'outer', 'left', 'right' |
join() | suffix 칼럼을 수동으로 생성해서 병함 |
reset_index() |
index를 처음칸부터 0~으로 재설정 (groupby한 결과를 한개의 dataframe으로 변경하는데도 유용함) |
데이터 분석, 변환하기 | |
head(n) | 앞에서 부터 n줄 만큼 데이터 불러오기(빈칸이면 5줄) |
tail(n) | 끝에서부터 n줄만큼 불러오기(최신 데이터셋을 확인할 때 유용) |
sort_values(by='칼럼') | 오름차순으로 데이터 정렬(복수의 칼럼을 기준으로 정렬하는 것도 가능함) |
sort_values(by ='칼럼', ascending=False) | 내림차순으로 데이터 정렬 |
loc [ 인덱스이름 ] | 'n'이라는 index이름을 가진 행의 값 출력 |
iloc [ n번째행 ] | n번째 행의 값 출력 |
value_counts() | 각 category 별로 값이 몇개 있는지 측정 |
unique() | 해당 칼럼의 카테고리를 모두 출력해줌 |
nunique() | 카테고리 종류의 개수를 출력 |
rename( { : } ) | 칼럼, 인덱스 이름 변경 |
replace( { : } ) | 특정값을 다른 값으로 대체(dataframe, series) |
map() | 시리즈의 각 요소를 지저된 함수나 매핑에 따라 반환(series) |
apply() | 함수를 데이터프레임의 행 또는 열에 적용(dataframe, series) |
duplicated() | 중복여부 확인 |
round(,n) | 파이썬에서 숫자를 반올림해서 소숫점 n번째자리까지 표현 |
set_option | 데이터 처리 및 출력 시의 다양한 옵션을 커스터마이즈할 수 있습니다. 예를 들어, 데이터 프레임의 출력 시 표시되는 최대 항/열 수, 출력 포맷등을 조정가능 |
quantile( ) | 통계학에서 데이터 세트를 동일한 크기의 연속 구간으로 나누는 데 사용되는 값. 데이터 세트의 특정 백분위수를 나타내는 위치 값으로 생각할 수 있습니다. 예를 들어, 50번째 백분위수(또는 중앙값)는 데이터 세트를 절반으로 나누는 값입니다 |
** set(dataset['column']) : 파이썬의 집합구조로 변환시켜서 중복된 값을 제거하고 고유한 값만 남길 수 있음.
결측치 | |
count() | 결측치 제외한 칼럼별 값의 갯수를 반환 |
isna() | 결측치 여부 확인 |
isna().mean() | 카테고리별로 결측치 비율(비율 보고 drop 여부 결정 多) |
isna().sum() | 카테고리별로 결측치 갯수 합 |
dropna() | 결측치 항목 삭제 |
dropna(subset=[칼럼]) | 특정 칼럼의 결측치 다 삭제 |
fillna(a) | 결측치를 해당값(a)로 채우기 |
삭제하기 | |
drop(인덱스) df.drop(columns=['B', 'C'], axis=1, inplace=True) |
값 삭제, 특정칼럼 삭제 |
del df['칼럼'] | 특정 칼럼 삭제 |
drop_duplicates() | 중복항복 삭제 |
data = data [data['칼럼'] != 30] | 칼럼의 값이 '30'인 행 삭제하기 |
* axis -> 0 : value값, 1 : column 범위
* inplace -> True : 변경된 값 덮어쓰기, False : 변경된 값 한번 출력
데이터타입 변경 | |
info() | 데이터의 기본정보 확인(데이터타입,누락된 값의 수, 메모리 사용량 등) |
str.isdigit() | 숫자로 구성되어 있는지 확인 |
dtypes() | 각 열의 데이터타입을 보여줌 |
astype(데이터타입) | 데이터타입 변경 |
to_numeric() | 문자열이나 다른 타입의 데이터를 숫자형으로 변환 (정수형 또는 부동소수점형 여부는 자동으로 결정됨) |
get_dummies() | one-hot encoding으로 0,1값 주어짐 |
pd.to_datetime() | datetime 데이터타입으로 변경 |
aggregation( 여러 데이터 포인트를 요약하고, 그룹화하여 새로운 통계 또는 정보를 추출) | |
describe() | 각 column의 통계정보 요약본(count, mean, std, min, max 등) |
groupby([칼럼1,칼럼2]).통계메소드 | 칼럼을 그룹화하여 통계,정보 추출 |
df['칼럼1'].groupby(df['칼럼2']) df.groupby('칼럼2')['칼럼1'] |
칼럼2로 칼럼1 분석하기 |
df.corr() df[['칼럼1','칼럼2']].corr() |
칼럼끼리 상관관계 분석하기 |
agg([통계메소드1,통계메소드2]) | 여러 개의 통계 메소드 한번에 입력가능 |
min() | 최소값 |
max() | 최대값 |
sum() | 합계 구하기 |
sum(axis=1) | 해당 데이터프레임 가로로 합산 구하기 |
mean() | 평균 |
median() | 중앙값 |
var() | 분산 |
std() | 표준편차 |
argmin() | 최솟값, 최대값을 가지고 있는 값을 반환 |
argmax() | 최솟값, 최대값을 가지고 있는 인덱스를 반환 |
cumsum() | 누적 합 계산 |
pct_change() | 퍼센트 변화율을 계산 |
문자열 메소드 | |
str | 무조건 이건 들어가야 문자열 자체에 대한 작업 가능 |
str.split(expand=True) | split하고 나뉜 항목들이 칼럼화됨 |
str.split().apply(함수/lamdba) | apply로 함수도 적용가능 |
피봇테이블 만들기 | |
pd.pivot(data,index,columns,values) | pivot은 함수적용은 불가능함. 그냥 데이터 구조변경만 가능 |
pd.pivot_table(data, index='A', columns='B', values='C', aggfunc='D') |
행:A, 열:B, 값:C, 적용통계:D로 하는 pivot table 만들기 |
pd.melt(data, id_vars, value_vars, value_name) |
피봇테이블-> dataframe으로 구조변경 |