이번 글은 코드잇 강의를 수강하면서 배운 내용을 주로 하여 정리되어 있습니다. (코드잇 스프린트 데이터 애널리스트 트랙 1기 훈련생)
Pandas의 Dataframe
pandas를 사용하면 표 형태의 데이터인 데이터프레임을 불러와서 자유롭게 분석하고 가공할 수 있습니다.
평소 주로 사용하는 데이터는 표 형태로, pandas를 사용하는 법을 알고 있다면, 업무나 일상에서 사용하는 다양한 데이터를 원하는 대로 분석할 수 있습니다.
pandas의 장점이자 단점은 기능이 많다는 점입니다.(다양한 문법을 가짐)
그래서 이번 정리에서는 pandas를 다루며 핵심적으로 필요한 문법만 정리할 예정으로, 이를 숙지한다면, 데이터를 능숙하게 다룰 수 있습니다.
Pandas에서는 dataframe을 능숙하게 다루는 것이 중요합니다.
Dataframe 기본기
Dataframe 살펴보기
데이터 사이언스의 출발점은 데이터의 구조와 내용을 탐색하는 것입니다. 이 탐색 과정을 바탕으로 데이터를 가공하고, 의미있는 분석 결과를 만들어 낼 수 있습니다.
우선 데이터의 구조의 내용을 탐색하려면 pandas 라이브러리를 활용하여 데이터를 데이터프레임으로 불러와야 합니다.
# pandas 라이브러리 불러오기
import pandas as pd
# csv 데이터 불러오기 (데이터가 같은 폴더에 있는 경우)
df = pd.read_csv('anything.csv')
# csv 데이터가 하위 폴더 data 폴더에 있는 경우
df = pd.read_csv('data/anything.csv')
# 데이터를 확인하기 위해 처음 5개의 로우만 가져오기
df.head()
# 데이터를 확인하기 위해 마지막 5개의 로우만 가져오기
df.tail()
# 데이터의 크기만 빠르게 확인하기
df.shape # (행(로우)의 개수, 열(칼럼)의 개수) 출력
# 데이터의 컬럼별로 데이터 타입을 확인하기
df.dtypes
# 데이터가 각 컬럼별로 몇 개의 값이 있는지와 데이터 타입을 확인하기
df.info() # 컬렴별로 몇개의 값이 있는지 확인하여 결측값이 있는지를 확인 가능하다.
# 데이터의 통계정보를 요약해서 확인하기(기본적으로 결측값을 제외한 숫자 데이터의 통계정보만을 요약해서 보여준다.)
df.describe()
# include='all' 이라는 파라미터를 입력하여 모든 컬럼의 요약 정보를 확인하기
df.describe(include='all')
# 위 코드를 입력했을 때 기존 describe 코드의 출력 결과와 다른 점은 unique, top, freq의 정보를 출력한다는 점입니다.
# unique는 그 컬럼에 있는 유일한 값의 개수를 출력합니다.
# top은 가장 많이 나온 최빈값을 출력합니다.
# 마지막으로 freq는 최빈값이 등장한 횟수를 출력합니다.
# 특정 컬럼을 기준으로 데이터를 정렬하기 (기본적으로 오름차순으로 정렬, 결측값은 맨 밑으로 정렬됨)
df.sort_values(by="컬럼명")
# 특정 컬럼을 기준으로 내림차순으로 데이터를 정렬하기 (결측값은 맨 밑으로 정렬됨)
df.sort_values(by="컬럼명", ascending=False)
데이터프레임을 살펴보는 주요 코드
데이터를 데이터프레임으로 불러옵니다. | 데이터프레임명 = pd.read_csv(”파일명”) |
처음 5개의 로우만 가져와서 데이터를 확인합니다. | 데이터프레임명.head() |
마지막 5개의 로우만 가져와서 데이터를 확인합니다. | 데이터프레임명.tail() |
데이터의 크기를 확인합니다. | 데이터프레임명.shape |
컬럼별로 데이터 타입을 확인합니다. | 데이터프레임명.dtypes |
각 컬럼별로 몇 개의 값이 있는지와 데이터 타입을 확인합니다. | 데이터프레임명.info() |
수치형 데이터의 통계 정보을 요약해서 확인합니다. | 데이터프레임명.describe() |
모든 컬럼의 요약 정보를 확인합니다. | 데이터프레임명.describe(include=’all’) |
특정 컬럼을 기준으로 데이터를 오름차순으로 정렬합니다. | 데이터프레임명.sort_values(by="컬럼명") |
특정 컬럼을 기준으로 데이터를 내림차순으로 정렬합니다. | 데이터프레임명.sort_values(by="컬럼명",ascending=False) |
코드 뒤에 붙는 괄호의 기준
데이터프레임의 통계 정보를 확인할 때는 describe() 라는 코드를 사용하며 뒤에 괄호를 붙입니다.
그리고 데이터프레임의 크기를 확인할 때는 shape 이라는 코드를 사용하는데 뒤에 괄호를 붙이지 않습니다.
이처럼 두개의 코드만 봐도 괄호를 붙이거나 붙이지 않는 경우가 존재하는데 이 때 괄호가 붙는 것에 괄호를 안 쓰면 오류가 나고, 괄호가 안 붙는 것에 괄호를 쓰면 오류가 나기 때문에 이 둘을 잘 구분할 줄 알아야 합니다.
이 구분을 하는 방법을 익히기 위해서는 뒤에 괄호가 붙는 것들은 DataFrame에 동작하는 일종의 '함수'고, 뒤에 괄호가 안 붙는 건 DataFrame의 정보를 담고 있는 일종의 '변수'라는 것을 인지하면 됩니다.
괄호 사용 규칙
- 괄호가 붙는 경우: describe(), head(), info(), sort_values() - 이는 데이터프레임에 동작하는 함수(메소드)입니다.
- 괄호가 붙지 않는 경우: shape, dtypes - 이는 데이터프레임의 정보를 담고 있는 변수(속성)입니다.
요약
- 함수: DataFrame에 동작을 수행하고 괄호를 붙여 사용합니다.
- 변수: DataFrame의 정보를 담고 있으며 괄호를 붙이지 않습니다.
엑셀 파일 불러오기
pandas에서는 다양한 기능을 엑셀 파일에도 사용해 볼 수 있도록, 엑셀 파일을 DataFrame으로 불러올 수 있습니다.
기본 사용법
import pandas as pd
df = pd.read_excel('data/anything.xlsx')
특정 시트 불러오기
첫 번째 시트가 아닌, 두 번째 시트('Sheet2')의 데이터를 불러오려면 sheet_name 파라미터를 사용합니다.
df = pd.read_excel('data/anything.xlsx', sheet_name=1) # 0부터 시작하므로 1은 두 번째 시트를 의미
데이터 시작 행 설정
데이터가 몇 번째 행부터 시작하는지 설정하기 위해 header 파라미터를 사용합니다. 예를 들어, 데이터가 여섯 번째 행부터 시작한다면
df = pd.read_excel('data/anything.xlsx', sheet_name=1, header=5) # 여섯 번째 줄(인덱스 5)부터 데이터 시작
특정 열만 불러오기
필요한 열만 선택하려면 usecols 파라미터를 사용합니다. 예를 들어, B열부터 J열까지 불러오려면
df = pd.read_excel('data/anything.xlsx', sheet_name=1, header=5, usecols='B:J')
추가 파라미터
read_excel() 함수에는 위에서 설명한 sheet_name, header, usecols 외에도 다양한 파라미터가 있으니 필요에 따라 pandas 공식 문서를 참고하면 됩니다.
엑셀 파일 불러오기 | df = pd.read_excel() |
특정 시트에서 데이터 불러오기 | df = pd.read_excel(sheet_name=) |
데이터 시작 행 설정 | df = pd.read_excel(header=) |
특정 열만 불러오기 | df = pd.read_excel(usecols=) |
인덱스, 컬럼명, 데이터 타입 설정하기
인덱스 설정
인덱스 컬럼 설정
특정 컬럼을 인덱스로 설정할 수 있습니다.
# 'ID' 컬럼이 있다고 가정할 때 'ID' 컬럼을 인덱스로 설정하기
df = df.set_index('ID')
# inplace=True 옵션은 곧 deprecated된다고 하니 사용하지 않는 것이 좋을 것 같습니다.
설정한 인덱스를 다시 되돌리기
설정한 인덱스 컬럼을 다시 되돌리고 싶다면 밑의 코드를 사용할 수 있습니다
# 설정 인덱스 되돌리기
df = df.reset_index()
컬럼명 설정
컬럼명 변경
기존 컬럼명이 너무 길거나 마음에 들지 않는다면 새로운 이름으로 변경할 수 있습니다.
# 현재 컬럼명 호출
df.columns # ['a', 'b', 'c']가 출력되었다고 가정함
# 호출된 컬럼명을 확인하고 전체 컬럼에 대해 변경하고 싶은 컬럼명을 모두 입력하여 변경
df.columns = ['Identifier', 'Full Name', 'age']
특정 컬럼명만 변경
특정 컬럼명을 수정하고 싶다면 특정 컬럼명만 선택적으로 변경할 수 있습니다. (딕셔너리를 통해 변경)
# 특정 컬럼명 변경
df = df.rename(columns={'Identifier': 'ID'})
데이터 타입 설정
데이터 타입 확인
# 현재 데이터 타입 확인
df.dtypes
데이터 타입 변경
특정 컬럼의 데이터 타입을 변경할 수 있습니다.
# 데이터 타입 변경
df['ID'] = df['ID'].astype(object) # 문자열(리스트, 딕셔너리도 포함될 수 있음)로 변경
df['age'] = df['age'].astype(int) # 정수형으로 변경
df['age'] = df['age'].astype(float) # 실수형으로 변경
위의 개념을 종합적으로 활용된 예시를 밑을 통해 확인할 수 있습니다.
import pandas as pd
# 예시 데이터를 생성
data = {'ID': [1, 2, 3], 'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data)
# 'ID' 컬럼을 인덱스로 설정
df.set_index('ID', inplace=True)
# 컬럼명 변경
df.rename(columns={'Name': 'Full Name', 'Age': 'Years'}, inplace=True)
# 데이터 타입 변경
df['Years'] = df['Years'].astype(float)
print(df)
print(df.dtypes)
이러한 기능들을 활용하면 DataFrame을 효율적으로 관리하고 원하는 형태로 데이터를 조작할 수 있습니다.
인덱스 설정 | df.set_index() |
컬럼명 변경 | df.rename() |
데이터 타입 변경 | df.astype() |
Series 살펴보기
데이터프레임에서 Series는 특정 컬럼 하나를 호출하여 확인할 수 있습니다.
그리고 호출한 Series를 다양한 방법으로 살펴볼 수 있습니다. 밑을 통해 그 방법들을 확인할 수 있습니다.
# 데이터프레임에서 series 호출하기
df.['weight']
# series의 데이터 타입 확인하기
df.['weight'].dtype # dtype('float64')와 같은 결과등이 출력될 수 있습니다.
# 특정 컬럼의 요약된 통계 정보 확인하기 (수치형 컬럼인 경우)
df.['weight'].describe()
# 특정 컬럼의 요약된 통계 정보 확인하기 (오브젝트 타입의 컬럼인 경우)
df.['ID'].describe() # 오브젝트 타입의 컬럼 또한 통계정보를 확인할 수 있으며, 수치형 컬럼보다 간단한 통계가 출력됩니다.
# 오브젝트 타입의 컬럼에서 고유 항목에 무엇들이 있는지 확인하기
df.['ID'].unique()
# 오브젝트 타입의 컬럼에서 결측값을 제외하고 고유 항목들이 각각 몇개인지 확인하기
df.['ID'].value_counts()
# 오브젝트 타입의 컬럼에서 결측값을 포함한 고유 항목들이 각각 몇개인지 확인하기
df.['ID'].value_counts(dropna=False)
# 오브젝트 타입의 컬럼에서 결측값을 포함한 고유 항목들이 각각 차지하는 비중(비율)을 확인하기
df.['ID'].value_counts(dropna=False, normalize=True)
# 원하는 컬럼만 모아서 데이터프레임 형태로 확인하기
df[['ID', 'age']]
# 특정 컬럼 한가지에 대해서도 어떻게 호출하냐에 따라 시리즈와 데이터프레임으로 호출될 수 있으며, 형태에 따라 사용할 수 있는 코드 또한 달라집니다.
df['ID'] # ID 컬럼을 시리즈 헝태로 호출
df[['ID']] # ID 컬럼을 데이터프레임 형태로 호출
데이터프레임에서 Series 호출하기 | df['column_name'] |
Series의 데이터 타입 확인하기 | df['column_name'].dtype |
특정 컬럼의 요약된 통계 정보 확인하기 (수치형 컬럼인 경우) | df['column_name'].describe() |
특정 컬럼의 요약된 통계 정보 확인하기 (오브젝트 타입의 컬럼인 경우) | df['column_name'].describe() |
오브젝트 타입의 컬럼에서 고유 항목 확인하기 | df['column_name'].unique() |
오브젝트 타입의 컬럼에서 고유 항목 수 확인하기 (결측값 제외) | df['column_name'].value_counts() |
오브젝트 타입의 컬럼에서 고유 항목 수 확인하기 (결측값 포함) | df['column_name'].value_counts(dropna=False) |
오브젝트 타입의 컬럼에서 고유 항목 비율 확인하기 | df['column_name'].value_counts(normalize=True, dropna=False) |
원하는 컬럼만 모아서 데이터프레임 형태로 확인하기 | df[['col1', 'col2']] |
Series 형태로 컬럼 호출 | df['column_name'] |
DataFrame 형태로 컬럼 호출 | df[['column_name']] |
여러 개의 조건으로 불린 인덱싱하기
불린 인덱싱은 조건에 맞는 데이터만 선택할 때 유용한 방법입니다. pandas의 dataframe에서 불린 인덱싱으로 여러 조건을 결합할 때는 논리 연산자(&, |, ~)를 사용합니다.
각 연산자를 기호로 간단하게 표현하는 논리 연산자
- & : AND 연산자 (모든 조건이 참일 때 선택) : 결합된 조건들이 모두 TRUE일 때, TRUE를 반환합니다.
- | : OR 연산자 (하나의 조건이라도 참일 때 선택) : 결합된 조건들 중에 하나라도 TRUE일 때, TRUE를 반환합니다.
- ~ : NOT 연산자 (조건의 반대를 선택) : 조건식을 반대로 바꿉니다.
# 예시
# A가 5보다 크고 B가 50 이하인 행 선택
filtered_df = df[(df['A'] > 5) & (df['B'] <= 50)]
print(filtered_df)
# A가 2보다 크거나 B가 30 이상인 행 선택
filtered_df_or = df[(df['A'] > 2) | (df['B'] >= 30)]
# C가 'c'가 아닌 행 선택
filtered_df_not = df[~(df['C'] == 'c')]
논리 연산자 여러 개를 사용하는 경우 우선도에 따라 연산이 진행되며, 우선도는 밑과 같이 평가되어 불린 인덱싱이 이루어집니다.
- 괄호 () : 최우선으로 평가됩니다.
- NOT ~ : 부정 연산자, 괄호 다음으로 우선 평가됩니다.
- AND & : 논리곱 연산자, ~ 다음으로 우선 평가됩니다.
- OR | : 논리합 연산자, 마지막으로 평가됩니다.
# 예시
df[(df['A'] > 2) & (df['B'] <= 40) | (df['C'] == 'd')]
# 이 코드에서는 &가 |보다 우선순위가 높기 때문에 & 연산이 먼저 평가됩니다. 조건의 우선순위를 명확히 하기 위해 괄호를 사용하는 것이 좋습니다.
A가 2보다 크고 B가 40 이하인 행 선택 | df[(df['A'] > 2) & (df['B'] <= 40)] |
A가 2보다 크거나 B가 30 이상인 행 선택 | `df[(df['A'] > 2) |
C가 'c'가 아닌 행 선택 | df[~(df['C'] == 'c')] |
query() 함수로 불린 인덱싱하기
Pandas의 query() 함수는 데이터프레임의 특정 조건을 만족하는 행을 필터링하는 간편한 방법입니다. 기존의 불린 인덱싱보다 코드가 간결해지며, 조건식을 문자열 형태로 작성해 DataFrame의 열 이름을 직접 사용할 수 있습니다. 또한, 변수나 문자열을 조건식에 포함할 수 있으며, 여러 조건을 결합하여 복잡한 필터링도 가능합니다.
@를 사용한 변수 참조
query() 함수에서 조건식에 외부 변수를 사용할 때는 변수 앞에 @ 기호를 붙입니다. 이는 함수 내부에서 해당 변수를 참조할 수 있도록 합니다.
# 예시 데이터프레임 생성
import pandas as pd
data = {
'applicant': ['John', 'Jane', 'Jake', 'Jill', 'Jack'],
'income': [6000, 4500, 7000, 3200, 5800],
'property_area': ['City', 'Suburb', 'City', 'Rural', 'City'],
'married': ['Y', 'N', 'Y', 'N', 'Y']
}
df = pd.DataFrame(data)
query() 함수 사용
1. 수입이 5000 이상인 신청자 필터링
df.query('income > 5000')
2. 변수를 사용하여 평균 수입보다 높은 신청자 필터링
income_mean = df['income'].mean()
df.query('income > @income_mean')
3. 담보 부동산이 도시에 있는 신청자 필터링
df.query("property_area == 'City'")
4. 담보 부동산이 도시나 교외에 있는 신청자 필터링
df.query("property_area in ['City', 'Suburb']")
5. 기혼 상태이고 수입이 평균보다 높은 신청자 필터링
df.query("married == 'Y' & income > @income_mean")
6. 여러 조건식을 괄호로 묶어 명확하게 필터링
df.query("(married == 'Y') & (income > @income_mean)")
query() 함수는 간결한 코드로 복잡한 조건식을 쉽게 작성할 수 있게 해줍니다. 다만 데이터가 많은 경우 속도가 느려질 수 있으므로 상황에 맞게 사용하는 것이 좋습니다. 다양한 방법을 익히면 다른 사람의 코드를 더 쉽게 이해할 수 있습니다.
데이터 삭제하기
데이터를 탐색하다보면, 가끔 오류가 있거나 데이터에 필요하지 않은 부분이 있는 것을 확인할 수 있습니다.
데이터를 탐색하다가 데이터 중에 특정 행에 문제가 있는 것을 발견한다면, 특정 행을 제거하는 방법을 사용할 수 있습니다.
# 데이터프레임에서 특정 행 삭제하기
df = df.drop("삭제하고 싶은 행의 인덱스")
# 한번에 여러 행을 삭제하고 싶다면, 리스트의 형태로 삭제하고 싶은 행들을 모두 입력하여 삭제할 수 있습니다.
만약 특정 컬럼을 삭제하고 싶은 경우에 drop함수는 기본적으로 로우를 삭제하는 함수이기 때문에 밑과 방법을 통해 특정 컬럼을 삭제할 수 있습니다.
# 데이터프레임에서 특정 컬럼 삭제하기
df = df.drop(columns='삭제하고 싶은 컬럼명')
# 컬럼 또한 행과 마찬가지로 여러 컬럼을 한번에 삭제하고 싶다면, 리스트의 형태로 삭제하고 싶은 컬럼을 모두 입력하여 삭제할 수 있습니다.
특정 행 삭제하기 | df.drop('index_name') |
여러 행 삭제하기 | df.drop(['index_name1', 'index_name2']) |
특정 컬럼 삭제하기 | df.drop(columns=’columns_name') |
여러 컬럼 삭제하기 | df.drop(columns=['columns_name1', 'columns_name2']) |
drop()함수와 axis
위에서 설명한 drop 함수에서 axis 파라미터를 사용하여 로우와 컬럼 삭제를 지정할 수 있습니다.
로우 삭제
기본적으로 axis=0 또는 axis='index'로 설정되어 있어, 로우를 삭제합니다.
df = df.drop('index_name', axis=0)
이는 내부적으로 df.drop('index_name')와 동일합니다.
컬럼 삭제
axis=1 또는 axis='columns'로 설정하여 컬럼을 삭제할 수 있습니다.
df = df.drop('column_name', axis=1)
이는 df.drop(columns='column_name')와 동일합니다.
요약
- 로우 삭제: drop('index_name') 또는 drop('index_name', axis=0)
- 컬럼 삭제: drop(columns='column_name') 또는 drop('column_name', axis=1)
로우 삭제하기 | df.drop('index_name', axis=0) |
컬럼 삭제하기 | df.drop('column_name', axis=1) |
데이터 내보내기
이번 목차에서는 DataFrame을 CSV 파일과 엑셀 파일로 내보내는 방법에 대해 알아보겠습니다.
pandas를 통해 데이터를 저장하면 매번 원본 파일을 불러와서 가공할 필요 없이 미리 저장해 둔 파일을 불러와 사용할 수 있습니다.
CSV 파일로 내보내기
CSV 파일로 저장
df.to_csv('data/anything.csv')
CSV 파일 불러오기
df1 = pd.read_csv('data/anything.csv')
기본적으로 to_csv()는 인덱스 값을 컬럼으로 만듭니다. 이를 방지하려면 index=False로 설정합니다.
인덱스 제외하고 저장
df1.to_csv('data/anything_1.csv', index=False)
엑셀 파일로 내보내기
엑셀 파일로 저장
df1.to_excel('data/anything_1.xlsx')
엑셀 파일 저장 시 추가 설정
- sheet_name: 저장될 시트 이름을 설정합니다.
- startrow와 startcol: 데이터가 시작될 행과 열을 설정합니다.
df1.to_excel('data/anything_1.xlsx', sheet_name='example', startrow=1, startcol=1)
이렇게 다양한 옵션을 사용하여 데이터를 CSV 파일이나 엑셀 파일로 저장하고 불러올 수 있습니다.
이러한 방법을 통해 데이터 가공 작업을 효율적으로 관리할 수 있습니다.
csv 파일로 저장하기 | df.to_csv('파일명.csv') |
csv 파일 불러오기 | df = pd.read_csv('파일명.csv') |
인덱스를 제외하고 저장하기 | df.to_csv('파일명.csv', index=False) |
엑셀 파일로 저장하기 | df.to_excel('파일명.xlsx') |
엑셀 파일을 저장하는 경우 추가 설정하기 | df.to_excel('파일명.xlsx', sheet_name='example', startrow=1, startcol=1) |
Dataframe을 다루는 기본 코드 리스트
데이터를 데이터프레임으로 불러옵니다. | 데이터프레임명 = pd.read_csv(”파일명”) |
처음 5개의 로우만 가져와서 데이터를 확인합니다. | 데이터프레임명.head() |
마지막 5개의 로우만 가져와서 데이터를 확인합니다. | 데이터프레임명.tail() |
데이터의 크기를 확인합니다. | 데이터프레임명.shape |
컬럼별로 데이터 타입을 확인합니다. | 데이터프레임명.dtypes |
각 컬럼별로 몇 개의 값이 있는지와 데이터 타입을 확인합니다. | 데이터프레임명.info() |
수치형 데이터의 통계 정보을 요약해서 확인합니다. | 데이터프레임명.describe() |
모든 컬럼의 요약 정보를 확인합니다. | 데이터프레임명.describe(include=’all’) |
특정 컬럼을 기준으로 데이터를 오름차순으로 정렬합니다. | 데이터프레임명.sort_values(by="컬럼명") |
특정 컬럼을 기준으로 데이터를 내림차순으로 정렬합니다. | 데이터프레임명.sort_values(by="컬럼명",ascending=False) |
엑셀 파일 불러오기 | df = pd.read_excel() |
특정 시트에서 데이터 불러오기 | df = pd.read_excel(sheet_name=) |
데이터 시작 행 설정 | df = pd.read_excel(header=) |
특정 열만 불러오기 | df = pd.read_excel(usecols=) |
인덱스 설정 | df.set_index() |
컬럼명 변경 | df.rename() |
데이터 타입 변경 | df.astype() |
데이터프레임에서 Series 호출하기 | df['column_name'] |
Series의 데이터 타입 확인하기 | df['column_name'].dtype |
특정 컬럼의 요약된 통계 정보 확인하기 (수치형 컬럼인 경우) | df['column_name'].describe() |
특정 컬럼의 요약된 통계 정보 확인하기 (오브젝트 타입의 컬럼인 경우) | df['column_name'].describe() |
오브젝트 타입의 컬럼에서 고유 항목 확인하기 | df['column_name'].unique() |
오브젝트 타입의 컬럼에서 고유 항목 수 확인하기 (결측값 제외) | df['column_name'].value_counts() |
오브젝트 타입의 컬럼에서 고유 항목 수 확인하기 (결측값 포함) | df['column_name'].value_counts(dropna=False) |
오브젝트 타입의 컬럼에서 고유 항목 비율 확인하기 | df['column_name'].value_counts(normalize=True, dropna=False) |
원하는 컬럼만 모아서 데이터프레임 형태로 확인하기 | df[['col1', 'col2']] |
Series 형태로 컬럼 호출 | df['column_name'] |
DataFrame 형태로 컬럼 호출 | df[['column_name']] |
A가 2보다 크고 B가 40 이하인 행 선택 | df[(df['A'] > 2) & (df['B'] <= 40)] |
A가 2보다 크거나 B가 30 이상인 행 선택 | `df[(df['A'] > 2) |
C가 'c'가 아닌 행 선택 | df[~(df['C'] == 'c')] |
특정 행 삭제하기 | df.drop('index_name') |
여러 행 삭제하기 | df.drop(['index_name1', 'index_name2']) |
특정 컬럼 삭제하기 | df.drop(columns=’columns_name') |
여러 컬럼 삭제하기 | df.drop(columns=['columns_name1', 'columns_name2']) |
로우 삭제하기 | df.drop('index_name', axis=0) |
컬럼 삭제하기 | df.drop('column_name', axis=1) |
csv 파일로 저장하기 | df.to_csv('파일명.csv') |
CSV 파일 불러오기 | df = pd.read_csv('파일명.csv') |
인덱스를 제외하고 저장하기 | df.to_csv('파일명.csv', index=False) |
엑셀 파일로 저장하기 | df.to_excel('파일명.xlsx') |
엑셀 파일을 저장하는 경우 추가 설정하기 | df.to_excel('파일명.xlsx', sheet_name='example', startrow=1, startcol=1) |
이번 글에서는 pandas의 Dataframe / Dataframe 살펴보기 / 파일 불러오기 / 인덱스, 컬럼명, 데이터 타입 설정하기 / Series 살펴보기 / 불린 인덱싱과 query 함수 / 데이터 삭제하기 / 데이터 내보내기가 포함된 내용을 정리했으며, 파이썬에서 데이터 분석을 하거나 프로그래밍을 하는 사람들에게 알아두면 유용한 개념들로 이번 기회를 통해 다른 분들도 정리하면 좋을 것 같습니다.
글 읽어주셔서 감사합니다.
출처 및 참고자료 : 코드잇 사이트 강의 'DataFrame 마스터하기' https://www.codeit.kr/topics/mastering-dataframe
'프로그래밍 언어 > Python' 카테고리의 다른 글
[파이썬 개념 정리 13] Pandas의 DataFrame 마스터하기 3️⃣ (문자 데이터 가공하기, 숫자 데이터 가공하기) (0) | 2024.07.29 |
---|---|
[파이썬 개념 정리 12] Pandas의 DataFrame 마스터하기 2️⃣ (데이터 전처리) (0) | 2024.07.28 |
[파이썬 개념 정리 10] 객체와 클래스 개념 정리 (0) | 2024.07.18 |
[파이썬 개념 정리 9] 맥 운영체제에서 파이썬 환경 구축 내용 정리 (0) | 2024.07.15 |
[파이썬 개념 정리 8]Seaborn 라이브러리를 이용한 시각화 개념 (2) | 2024.07.05 |
데이터 분석을 공부하고 카페를 열심히 돌아다니는 이야기
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!