데이터분석 : 1. 데이터 생성 및 읽기
데이터분석 : 2. 인덱싱, 선택 및 할당
데이터분석 : 3. 요약 기능 및 맵
데이터분석 : 4. 그룹화 및 정렬
데이터분석 : 5. 데이터 유형 및 결측값
데이터분석 : 6. 이름 변경 및 결합
데이터 분석을 위한 Python 라이브러리인 pandas에 대해 배워보자.
직접 데이터를 생성하는 방법과 이미 존재하는 데이터를 다루는 방법에 대해 배워보자
-Pandas는 Python에서 데이터 조작과 분석을 위한 강력한 라이브러리다. DataFrame이라는 데이터 구조를 제공한다.
-Pandas는 데이터를 구조화하고 처리하는 데 특화된 기능을 제공하여 데이터 분석 작업을 더 효율적으로 수행할 수 있도록 도와준다.
-Pandas는 데이터 과학 및 데이터 분석 커뮤니티에서 널리 사용되며, 데이터 전처리, 탐색적 데이터 분석, 통계 분석, 기계 학습 등 다양한 분야에서 활용된다. Pandas의 강력한 기능과 사용자 친화적인 인터페이스는 데이터 작업의 생산성을 향상시키는 데 도움을 준다.
import pandas as pd
Pansdas에는 두 가지 핵심 객체가 있는데 이는 'DataFrame'과 'Series'이다.
쉽게 말하면, Series는 1차원 데이터, DataFrame은 2차원 데이터라고 생각하면 된다.
이를 알아보자!
pd.DataFrame({'Bob': ['I liked it.', 'It was awful.'], 'Sue': ['Pretty good.', 'Bland.']})
DataFrame 객체를 생성하기 위해 pd.DataFrame() 생성자를 사용한다.
새로운 DataFrame을 선언하기 위한 구문은 열 이름을 '키'로, 엔트리의 리스트를 값으로 하는 '딕셔너리'이다.
이는 새로운 DataFrame을 생성하는 표준적인 방법이며, 가장 일반적으로 사용되는 방법이다.
딕셔너리-리스트 생성자는 열 레이블에 값을 할당하지만, 행 레이블에는 0부터 시작하는 연속된 숫자(0, 1, 2, 3, ...)를 사용합니다. 때로는 이렇게 자동으로 할당되는 값이 적절하지만, 우리가 직접 레이블을 할당하고자 할 때도 있다.
pd.DataFrame({'Bob': ['I liked it.', 'It was awful.'],
'Sue': ['Pretty good.', 'Bland.']},
index=['Product A', 'Product B'])
index=['2018', '2019','2020','2021']
YH = pd.Series([143, 150, 157, 160], index=index)
CS = pd.Series([165, 172, 180, 190],index=index)
growth = pd.DataFrame({
'영희' : YH,
'철수' : CS
})
growth
index=['2018', '2019','2020','2021']
data = {
'영희' :[143, 150, 157, 160],
'철수' :[165, 172, 180, 190]
}
growth = pd.DataFrame(data,columns=['영희','철수'],index=index )
growth
growth.dtypes
growth.astype('float')
growth_float = growth.astype('float')
growth_float = growth.astype({'영희' : 'float'})
'영희'의 성장 데이터만 선택
yh_growth = growth['영희']
print(yh_growth)'철수'의 성장 데이터만 선택
cs_growth = growth['철수']
print(cs_growth)'2020'년도의 성장 데이터 선택
row_2020 = growth.loc['2020']
print(row_2020)'민지'의 성장 데이터 추가
mj_growth = pd.Series([155, 162, 170, 175], index=index)
growth['민지'] = mj_growth
print(growth)각 열의 평균 계산
column_means = growth.mean()
print(column_means)각 행의 합계 계산
row_sums = growth.sum(axis=1)
print(row_sums)
pd.Series([1, 2, 3, 4, 5])
0 1
1 2
2 3
3 4
4 5
dtype: int64
pd.Series([30, 35, 40], index=['2015 Sales', '2016 Sales', '2017 Sales'], name='Product A')
2015 Sales 30
2016 Sales 35
2017 Sales 40
Name: Product A, dtype: int64
fruits = pd.DataFrame({'Apples': [30], 'Bananas': [21]})
fruits = pd.DataFrame([[30, 21]], columns=['Apples', 'Bananas'])
fruit_sales = pd.DataFrame([[35, 21], [41, 34]], columns=['Apples', 'Bananas'],
index=['2017 Sales', '2018 Sales'])
ingredients = pd.Series(
['4 cups', '1 cup', '2 large', '1 can'],
index=['Flour','Milk', 'Eggs','Spam'],
name='Dinner')
quantities = ['4 cups', '1 cup', '2 large', '1 can']
items = ['Flour', 'Milk', 'Eggs', 'Spam']
recipe = pd.Series(quantities, index=items, name='Dinner')
winemag = pd.read_csv("./winemag-data-130k-v2.csv")
winemag = pd.read_csv("./winemag-data-130k-v2.csv",index_col=0)
winemag.shape
(129971, 13)
winemag = pd.read_csv("./winemag-data-130k-v2.csv",index_col=0)
pd.set_option("display.max_rows", 5) #5 대신 none도 가능 그러나 시간이 오래걸림
winemag.head()
winemag.tail()