본문 바로가기
알고리즘 PS (백준)/🐍 Python (파이썬)

[파이썬 python] Pandas 설치 및 활용 (데이터 프레임)

by 코딩하는 동현😎 2022. 6. 7.

pandas 란?

데이터 프레임을 효과적으로 다룰수 있는 라이브러리로 , panel datas의 약자로 파이썬 기반 데이터 분석에서 많이 사용되는 라이브러리 립니다.

 

사용방법

  • import pandas
  • import pandas as pd


판다스 설치하는 법

 

1. pip (파이썬 패키지 관리 시스템) 를 설치 안했다면? (맥 MAC) - 3.9 버전 기준

윈도우는 python3.9 대신에 python을 입력하세요!


2. pip를 이용해서 pandas 설치

윈도우 cmd
$ python -m pip install numpy

맥 터미널 (3.9 버전 기준)
$ python3.9 -m pip install numpy

데이터 프레임

데이터 프레임은 행(인덱스)와 열(컬럼)으로 구분되는 테이블형 데이터 베이스입니다.

인덱스는 별도로 지정을 하지 않으면 정수로 지정되고, 한번 정해진 인덱스는 불변입니다.


데이터 프레임 만들기

  • 크기 : 3행 2열
  • 인덱스 명: m1 , m2 , m3
  • 컬럼 명 : price , num
  • 값 : 랜덤 숫자

행렬로 데이터 프레임 입력하기

col = ["unit price" , "number"]
rows = ["store1","store2","store3"]
df = pd.DataFrame([[1000 , 25],[280 , 120],[900 , 30]] , rows,col)

특정 열 접근 및 마스킹

특정 열 접근

-형식 : 데이터프레임[칼럼 명]

 

마스킹

-boolean 로직 결과를 데이터 프레임에 입력

 

print(df) : 데이터 프레임을 출력합니다.

df[칼럼명] : 해당 칼럼에 해당하는 값들을 골라냅니다.

df[칼럼명] <조건> : 해당 조건에 대한 열들의 true/false 를 반환합니다.

df[마스킹] : true에 해당하는 열들만 테이블로 출력합니다.


칼럼 간 연산

칼럼 내 모든 값들 사이에 연산이 적용되고, 연산 결과를 새로운 칼럼에 저장할수 있습니다.


sum 함수 axis

sum함수 axis는 축을 의미합니다.

선형대수학에서 m*n 행렬이 있다고 하면 (m이 세로  , n이 가로)

axis = 0 은 m축을 의미하고 axis = 1은 n축을 의미하는데, 그 축을 기준으로 쭉 합계를 구합니다.

배열에서 축은 아래와 같습니다.

axis = 1, 즉 n 축을 기준으로 했기 때문에 각 price와 num이 합해져서

[ 0.898094 , 1.217364 , 1.252768]

 와같은 행렬이 만들어 집니다.

 

만약에 axis = 0으로 했다면 m축 기준이니까 세로로 더하겠죠?

다차원 배열에도 axis를 통해서 다룰수 있습니다.

 

0: 첫번째 차원 , 세로

1: 두번째 차원 ([][]) 가로

3 : 세번째 차원([][][]) z축


총가격이 가장 높은 열만 출력 예제

import pandas as pd
import numpy as np

# 객체 수 선언!#########
number_of_stores = 3
#####################

rows = []
col = ["unit price" , "number"]
#make columns
for i in range(1,number_of_stores+1):
    rows.append(("store "+str(i)))
df = pd.DataFrame([[1000 , 25],[280 , 120],[900 , 30]] , rows,col)
# 생성한 테이블 출력
print(df)

# 총 가격이라는 새로운 필드 생성하고 출력
df['total price'] = df['unit price']*df['number']
print(df)

# 총 가격이 가장 큰 테이블 출력
priceSet = df['total price']
max=0
for price in priceSet:
    if(price>max):
        max=price
#특정열 마스킹
df[df['total price']>=max]
반응형

댓글