pandas는 데이터 조작 및 분석을 위한 파이썬 프로그래밍 언어 용으로 작성된 소프트웨어 라이브러리이다. 숫자 테이블과 시계열을 조작하기 위한 데이터 구조와 연산을 제공하며, 무료 소프트웨어 New BSD 라이센스이다.
-위키백과
import pandas as pd
데이터프레임 직접 만들기
- pd.DataFrame() 함수를 사용해 데이터프레임을 직접 만들 수 있다.
- 대부분 리스트, 딕셔너리, Numpy 배열로부터 데이터프레임을 만든다.
# 딕셔너리
dict1 = {'Name': ['Gildong', 'Sarang', 'Jiemae', 'Yeoin'],
'Level': ['Gold', 'Bronze', 'Silver', 'Gold'],
'Score': [56000, 23000, 44000, 52000]}
df = pd.DataFrame(dict)
# 리스트
frame = pd.DataFrame([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
path = 'https://raw.githubusercontent.com/DA4BAM/dataset/master/titanic_simple.csv'
data = pd.read_csv(path)
data.head(3) # 상위 3개
data.tail(10) # 하위 10개
data.shape # (891, 8)
data.columns
# Index(['PassengerId', 'Survived', 'Pclass', 'Name', 'Sex', 'Age', 'Fare','Embarked'], dtype='object')
data.columns.values # np.array 형태
# 데이터프레임을 리스트 함수에 넣으면 열 이름이 리스트로 반환됨
list(data)
# 내림차순 정렬
data.sort_index(ascending = False)
# Age 열을 기준으로 내림차순 정렬
data.sort_values(by = 'Age', ascending = False)
# 복합 열 정렬
data.sort_values(by = ['Age', 'Pclass'], ascending = [True, False])
print(data['Embarked'].unique()) # ['Southampton' 'Cherbourg' 'Queenstown' nan]
print(data['Embarked'].value_counts())
# Southampton 644
# Cherbourg 168
# Queenstown 77
# Name: Embarked, dtype: int64
data['Age'].sum() # 21205.17
# Age, Fare 두 열의 최댓값을 한 번에 확인
data[['Age', 'Fare']].max()
# Age 80.0000
# Fare 512.3292
# dtype: float64
# 1차원 조회
data['Age']
data.Age
# 2차원 조회
data[['Age']]
data[['Age', 'Pclass']] # Age, Pclass 열만 조회
# Age, Pclass열만 Age 열 기준으로 내림차순 정렬해서 조회
data[['Age', 'Pclass']].sort_values(by = 'Age', ascending = False)
# 단일 조건 조회
data.loc[data['Age']>=70]
# 여러 조건 조회
data.loc[data['Age']>= 70 & data['Pclass'] == 2)]
# 조건을 만족하는 행의 일부 열 조회
data.loc[data['Age'] >= 30, ['Pclass', 'Sex']]
# isit() 메소드
data.loc[data['Embarked'].isin(['Southhampton', 'Queenstown'])]
# between() 메소드
data.loc[data['Age'].between(10, 20, inclusive='left') & (data['Sex'] == 'male')]
DataFrame.groupby('집계기준변수', as_index=)['집계대상변수'].집계함수
- as_index = True: 집계기준변수를 인덱스로 사용
- as_index = False: 집계기준변수를 인덱스가 아닌 열로 사용 → 행 번호를 기반으로 한 정수 값이 인덱스로 설정
# Embarked 별 Fare 평균 → 시리즈
data.groupby('Embarked', as_index = False)['Fare'].mean()
# 여러열 집계
# Embarked, Sex 별 Fare 평균과 Age 평균 → 데이터프레임
data.groupby(['Embarked','Sex'], as_index = False)[['Fare','Age']].mean()
# sum() 메소드 앞에 아무 열도 지정하지 않으면 기준열 이외의 모든 열에 대한 집계가 수행
# Embarked 열 이외의 모든 열에 대한 집계가 수행
data.groupby('Embarked', as_index=False).sum()
# 객실등급(Pclass)별, 생존여부(Survived)별 나이(Age), 운임(Fare)의 최대, 최소, 평균, 표준편차
data.groupby(['Pclass','Survived'], as_index = False)[['Age','Fare']].agg(['max', 'min', 'mean', 'std'])
isin 메소드 써놓고 왜 주석은 ini메소드라고 하셨나요?