Today I Learned

파이썬 판다스 시작하기 - 인프런 데이터리안

by Holly Yoon

 해당 포스팅은 Pandas 공식문서를 참고합니다. 데이터리안 강좌 ('데이터 분석을 위한 판다스') 수강하면서, 메모한 내용! 인프런 강의들은 질의응답 답변이 늦는 점이 항상 아쉽다. 강사님께 질문 달리면 알림이 안가나..?

1. 판다스의 자료구조

DataFrame을 정의하는 방법

  • column + values
  • np.array + 이후 column명 지정
#1번
d = {'col1': [1, 2], 'col2': [3, 4]}
df = pd.DataFrame(data=d)
df

#2번
df2 = pd.DataFrame(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]),
...                    columns=['a', 'b', 'c'])
>>> df2
   a  b  c
0  1  2  3
1  4  5  6
2  7  8  9
  • 기술 통계량 확인하기
In [9]: df.describe()
Out[9]: 
             Age
count   3.000000
mean   38.333333
std    18.230012
min    22.000000
25%    28.500000
50%    35.000000
75%    46.500000
max    58.000000

 

2. 데이터 가져오기

  • 특정 열을 가져오기
#컬럼 1개 선택
ages = titanic['Age']
#컬럼 2개 선택
titanic[['Age','Name']]
  • 특정 조건을 만족하는 로우 가져오기
#35세 이상 승객 확인하기
titanic['Age']>35 # T,F bool 시리즈를 리턴해줌
titanic[titanic['Age']>35]

#Pclass가 2,3인 값만 가져오기 - isin
titanic[titanic['Pclass'].isin([2,3])]
titanic[(titanic['Pclass'] ==2) | (titanic['Pclass'] ==3)]
  • 특정 조건을 만족하는 로우와 행을 가져오기
titanic.loc[titanic['Age']>35,'Name']
  • Null값 찾기,처리
titanic['Age'].isna() #null이라면 true
titanic['Age'].notna()
titanic['Age'].dropna() #하나의 null이 있으면 행 삭제

 

2. 데이터 시각화

  • 시각화에 필요한 matplotlib
  • data type이 잘못 들어간 부분은 수정해서 불러오기
import pandas as pd
import matplotlib.pyplot as plt

#index를 별도로 지정해주기
#string으로 되어있는 data를 datetime으로 바꿔주기
air_quality = pd.read_csv('https://raw.githubusercontent.com/pandas-dev/pandas/master/doc/data/air_quality_no2.csv',index_col=0, parse_dates=True)
  • 라인차트
air_quality.plot()
air_quality['station_paris'].plot()
  • 산포도
air_quality.plot.scatter(x='station_london', y='station_paris', alpha=0.5)
  • 박스플롯
air_quality.plot.box()
  • 플롯영역
air_quality.plot.area()
air_quality.plot.area(subplots=True) #각 컬럼별로

 

3. 데이터 수정

  • rename() : 컬럼 혹은 인덱스명 수정
air_quality = air_quality.rename(columns={'station_paris':'FR04014'})
  • drop() : 특정 컬럼 삭제
air_quality.drop(['station_london'],axis=1)
air_quality.drop_duplicates()
  • apply() : dataframe에 함수 적용
#방법1
def level(x):
	if x>=mean:
    	result='high'
    elif x<mean:
    	result='low'
    else:
    	result=x
air_quality['station_paris_level'] = air_quality['station_paris'].apply(level)

#방법2
air_quality['station_paris_level'] = air_quality['station_paris'].apply(lambda x: 'high' if x>=mean else 'low')
  • 요약통계 : agg()
In [7]: titanic.agg(
   ...:     {
   ...:         "Age": ["min", "max", "median", "skew"],
   ...:         "Fare": ["min", "max", "median", "mean"],
   ...:     }
   ...: )
   ...: 
Out[7]: 
              Age        Fare
min      0.420000    0.000000
max     80.000000  512.329200
median  28.000000   14.454200
skew     0.389108         NaN
mean          NaN   32.204208
  • groupby()
titanic.groupby('Sex')['Age'].mean()

블로그의 정보

Study Log by Holly

Holly Yoon

활동하기