Pandas 소개
Pandas는 고성능이고 사용하기 쉬운 데이터 구조와 데이터 분석 도구를 제공하는 Python 라이브러리입니다. 데이터 과학자와 분석가가 데이터 정리, 조작 및 분석을 위해 널리 사용합니다.
시리즈 및 DataFrame
Pandas의 두 가지 주요 데이터 구조는 Series와 DataFrame입니다. Series는 1차원 데이터 배열이고, DataFrame은 2차원 데이터 배열입니다. Series와 DataFrame은 모두 인덱싱 및 슬라이싱이 가능하며 다양한 방법을 사용하여 조작할 수 있습니다.
데이터프레임 생성
DataFrame은 목록, 사전 또는 CSV 파일과 같은 다양한 소스에서 생성될 수 있습니다. 예를 들어 다음 코드는 목록에서 DataFrame을 생성합니다.
import pandas as pd
data = [1, 2, 3, 4, 5]
df = pd.DataFrame(data)
print(df)
이 코드는 다음 DataFrame을 인쇄합니다.
0
0 1
1 2
2 3
3 4
4 5
외부 파일 로드
DataFrame은 CSV 파일과 같은 외부 파일에서 로드할 수도 있습니다. 예를 들어 다음 코드는 “data.csv”라는 CSV 파일에서 DataFrame을 로드합니다.
df = pd.read_csv("data.csv")
print(df)
이 코드는 “data.csv” 파일에 저장된 DataFrame을 인쇄합니다.
DataFrame 기본 사항 알아보기
DataFrame을 생성한 후에는 해당 데이터 탐색을 시작할 수 있습니다. head()
및 tail()
메서드를 사용하여 각각 DataFrame의 처음 몇 행과 마지막 몇 행을 볼 수 있습니다. 또한 이 info()
메서드를 사용하여 행과 열 수, 열의 데이터 유형, 누락된 값 등 DataFrame에 대한 정보를 얻을 수도 있습니다.
DataFrame 인덱싱 및 정렬
행 또는 열 이름을 사용하여 DataFrame을 인덱싱할 수 있습니다. 예를 들어 다음 코드는 DataFrame의 두 번째 행과 세 번째 열의 값을 인쇄합니다.
df["column_name"][1]
행이나 열을 기준으로 DataFrame을 정렬할 수도 있습니다. 예를 들어 다음 코드는 DataFrame을 해당 column_name
열을 기준으로 오름차순으로 정렬합니다.
df = df.sort_values(by="column_name")
DataFrame 행과 열 추가 및 삭제
append()
및 메서드를 사용하여 DataFrame에서 행과 열을 추가하고 삭제할 수 있습니다 drop()
. 예를 들어 다음 코드는 DataFrame에 새 행을 추가합니다.
df = df.append({"column_name": "new_value"}, ignore_index=True)
다음 코드는 DataFrame에서 세 번째 열을 삭제합니다.
df = df.drop("column_name", axis=1)
DataFrame 누락값 감지 및 처리
DataFrame의 누락된 값은 으로 표시됩니다 NaN
. isnull()
및 메서드를 사용하여 notnull()
DataFrame에서 누락된 값을 확인할 수 있습니다. 예를 들어 다음 코드는 column_name
DataFrame 열에 누락된 값이 있는지 확인합니다 .
df["column_name"].isnull().values.any()
메서드를 사용하여 DataFrame에서 누락된 값을 채울 수도 있습니다 fillna()
. 예를 들어 다음 코드는 열의 누락된 값을 column_name
값으로 채웁니다 0
.
df["column_name"].fillna(0, inplace=True)
DataFrame 통계 처리
평균, 표준 편차, 최소값 및 최대값과 같은 DataFrame에 대한 다양한 통계를 계산할 수 있습니다. 예를 들어 다음 코드는 column_name
DataFrame 열에 있는 값의 평균을 계산합니다.
df["column_name"].mean()
하나 이상의 열로 DataFrame을 그룹화하고 각 그룹에 대한 통계를 계산할 수도 있습니다. 예를 들어 다음 코드는 DataFrame을 컬럼 이름 열을 기준으로 그룹화하고 각 그룹에 대한 컬럼 이름 열 값의 평균을 계산합니다.
df = df.groupby("column_name")["column_name"].mean()
데이터 분석을 위한 Pandas
Pandas는 데이터 분석을 위한 강력한 Python 라이브러리입니다. 데이터 로드, 정리, 변환 및 분석을 위한 다양한 도구를 제공합니다. Pandas는 사용하기 쉽고 효율적이며 확장 가능하기 때문에 데이터 과학자와 분석가에게 인기 있는 선택입니다.
다음은 데이터 분석을 위한 가장 일반적인 Pandas DataFrame 작업 중 일부입니다.
- DataFrames 그룹핑: 이 작업을 사용하면 하나 이상의 열로 DataFrame을 그룹화한 다음 그룹에 대해 집계 작업을 수행할 수 있습니다. 예를 들어 DataFrame을 성별로 그룹화한 다음 각 성별의 평균 급여를 계산할 수 있습니다.
- DataFrame 중복 제거: 이 작업을 사용하면 DataFrame에서 중복 행을 제거할 수 있습니다. 이는 중복 데이터를 제거하거나 DataFrame을 단순화하려는 경우 유용할 수 있습니다.
- DataFrame value_counts: 이 함수는 DataFrame 열에 각 값이 나타나는 횟수를 반환합니다. 이는 열에서 가장 일반적인 값을 빠르게 식별하는 데 유용할 수 있습니다.
- DataFrames 결합: 이 작업을 사용하면 두 개 이상의 DataFrame을 단일 DataFrame으로 결합할 수 있습니다. 이는 다양한 소스의 데이터를 병합하거나 어떤 방식으로든 관련된 데이터를 결합하는 데 유용할 수 있습니다.
- DataFrame 순위 지정: 이 작업을 사용하면 지정된 열을 기준으로 DataFrame의 행 순위를 지정할 수 있습니다. 이는 데이터세트에서 최고 또는 최저 성과자를 식별하는 데 유용할 수 있습니다.
- DataFrame 날짜 유형 사용: Pandas DataFrames는 날짜 또는 날짜/시간 유형의 데이터를 저장할 수 있습니다. 이를 통해 날짜별로 행을 필터링하거나 두 날짜 간의 차이를 계산하는 등 데이터에 대해 날짜 관련 작업을 수행할 수 있습니다.
- dtypes: 이 함수는 DataFrame에 있는 각 열의 데이터 유형을 반환합니다. 이는 DataFrame에 저장된 데이터 유형을 이해하고 해당 데이터 유형과 호환되는 작업을 수행하는 데 유용할 수 있습니다.
- DataFrame apply: 이 함수를 사용하면 DataFrame의 각 행이나 열에 함수를 적용할 수 있습니다. 이는 데이터에 대한 사용자 정의 계산을 수행하는 데 유용할 수 있습니다.
- DataFrame map: 이 함수를 사용하면 DataFrame 열의 값을 새 값으로 바꿀 수 있습니다. 이는 데이터를 정리하거나 데이터를 다른 형식으로 변환하는 데 유용할 수 있습니다.
- DataFrame 산술 연산: Pandas DataFrames는 덧셈, 뺄셈, 곱셈, 나눗셈과 같은 다양한 산술 연산을 지원합니다. 이를 통해 데이터에 대한 계산을 수행하고 기존 DataFrame에서 새 DataFrame을 생성할 수 있습니다.
- 원 핫 인코딩: 원 핫 인코딩은 범주형 데이터를 기계 학습 알고리즘에서 사용할 수 있는 숫자 형식으로 변환하는 기술입니다. Pandas는 하나의 핫 인코딩을 수행하기 위한 다양한 기능을 제공합니다.
이는 데이터 분석을 위한 가장 일반적인 Pandas DataFrame 작업 중 일부에 불과합니다. 자세한 내용은 pandas 설명서( https://pandas.pydata.org/ )를 참조하세요.
다음은 위에 언급된 pandas DataFrame 작업 중 일부를 보여주는 샘플 코드입니다.
import pandas as pd
# Create a DataFrame
df = pd.DataFrame({
"name": ["John Doe", "Jane Doe", "John Smith", "Jane Smith"],
"age": [30, 25, 40, 35],
"gender": ["male", "female", "male", "female"]
})
# Group the DataFrame by gender
grouped_df = df.groupby("gender")
# Calculate the average salary for each gender
average_salary_by_gender = grouped_df["salary"].mean()
# Remove duplicate rows from the DataFrame
df = df.drop_duplicates()
# Count the number of times each value appears in the "gender" column
gender_value_counts = df["gender"].value_counts()
# Combine two DataFrames
df_1 = pd.DataFrame({
"name": ["John Doe", "Jane Doe", "John Smith", "Jane Smith"],
"age": [30, 25, 40, 35]
})
df_2 = pd.DataFrame({
"name": ["John Doe", "Jane Doe", "Michael Smith"],
"salary": [50000, 60000, 70000]
})
df = df_1.merge(df_2, on="name")
# Rank the DataFrame by salary
df = df.sort_values("salary", ascending=False)
# Get the date type of the "date_of_birth" column
date_of_birth_dtype = df
다음은 Pandas를 사용하는 Python의 핫 인코딩에 대한 샘플 코드입니다.
import pandas as pd
# Create a DataFrame
df = pd.DataFrame({
"country": ["USA", "Canada", "Mexico", "Brazil", "Argentina"],
"population": [330000000, 38000000, 128000000, 212000000, 44000000]
})
# One hot encode the country column
df = pd.get_dummies(df, columns=["country"])
# Print the DataFrame
print(df)
country
이 코드는 먼저 두 개의 열( 및 ) 이 있는 DataFrame을 생성합니다 population
. 열에 country
는 5개 국가의 이름이 포함되고 population
열에는 각 국가의 인구가 포함됩니다.
다음 코드 줄에서는 이 get_dummies()
함수를 사용하여 열을 핫 인코딩합니다 country
. 즉, 해당 country
열은 열의 각 고유 값에 대해 새 열로 변환됩니다 country
. 예를 들어 country
열의 원래 값은 “USA”, “Canada”, “Mexico”, “Brazil” 및 “Argentina”였습니다. 한 번의 핫 인코딩 후에 DataFrame에는 country_USA
, country_Canada
, country_Mexico
, country_Brazil
및 5개의 새로운 열이 있습니다 country_Argentina
. 이러한 새 열 각각에는 해당 국가가 원래 열에 있으면 값 1이 포함되고 country
, 그렇지 않으면 값 0이 포함됩니다.
코드의 마지막 줄은 DataFrame을 콘솔에 인쇄합니다. 코드의 출력은 6개의 열이 있는 DataFrame입니다. 열을 population
핫 인코딩하여 생성된 5개의 새 열입니다 country
.
다음은 코드 출력의 예입니다.
population country_Argentina country_Brazil ... country_Mexico country_USA
0 330000000 0 0 ... 0 1
1 38000000 0 0 ... 0 0
2 128000000 1 0 ... 1 0
3 212000000 0 1 ... 0 0
4 44000000 1 0 ... 0 0