티스토리 뷰

python

[python, DataFrame]데이터 탐색

코딩계란 2024. 2. 13. 17:51
728x90
 

[python]Mysql의 데이터로 Data Frame 형성

패키지(터미널에서 설치) pip install sqlalchemy pip install pymysql 데이터 베이스 접속 from sqlalchemy import create_engine database_connection = create_engine('데이터 베이스 접속 url') 데이터 베이스 접속 url은 데이터

growingegg.tistory.com

 

데이터 프레임에서의 데이터 선택

열 선택 

  • 데이터 프레임['컬럼이름'] 또는 데이터 프레임. 컬럼 이름
  • 데이터 프레임.컬럼 이름으로 접근할 때는 컬럼 이름이 반드시 문자열이어야 한다. 
  • 하나의 컬럼 이름을 이용해서 접근하면 Series로 리턴

행 선택

  • loc[인덱스 이름]으로 접근 
  • iloc[정수형 위치 인덱스] 로 접근 
  • series로 리턴

셀 선택

  • [컬럼 이름][인덱스 이름]의 형태로 접근
  • loc[인덱스 이름, 컬럼 이름]
  • iloc[행 위치 인덱스, 열 위치 인덱스]

다중 선택

  • list를 이용해서 선택
  • list를 이용해서 선택하면 DataFrame이 리턴

실습

import numpy as np 
import pandas as pd 

#item.csv 파일을 읽어서 DataFrame 만들기 
item = pd.read_csv('C:/Users/USER/Downloads/data/data/item.csv')
print(item.head())
item.info()

#
item.index = item['code']

item.index = ['사과', '수박', '참외', '바나나', '레몬', '망고']
print(item)

#열 하나 선택
print(item['name'])
print(item.price)

#열 여러 개 선택
print(item['name' ])
print(item.price)

#행 하나 선택
print(item.iloc[0])
print(item.loc['사과'])
#결과
	code  manufacture            name  price
0     1        korea           apple   1500
1     2        korea      watermelon  15000
2     3        korea  oriental melon   1000
3     4  philippines          banana    500
4     5        korea           lemon   1500
     code  manufacture            name  price
사과      1        korea           apple   1500
수박      2        korea      watermelon  15000
참외      3        korea  oriental melon   1000
바나나     4  philippines          banana    500
레몬      5        korea           lemon   1500
망고      6        korea           mango    700
사과              apple
수박         watermelon
참외     oriental melon
바나나            banana
레몬              lemon
망고              mango
Name: name, dtype: object
사과      1500
수박     15000
참외      1000
바나나      500
레몬      1500
망고       700
Name: price, dtype: int64

 

범위를 이용한 행 인덱싱 

  • [시작위치: 종료 위치:간격]을 이용하는 것이 가능 
  • 시작위치는 생략하면 0. 종류위치를 생략하면 마지막. 각격을 생략하면 1.
  • 이름 인덱스에서는 마지막 위치가 포함된다. 

 

실습

print(iloc[1:4])
print(item.loc["수박":"바나나"])
#결과
	code  manufacture            name  price
수박      2        korea      watermelon  15000
참외      3        korea  oriental melon   1000
바나나     4  philippines          banana    500
     code  manufacture            name  price
수박      2        korea      watermelon  15000
참외      3        korea  oriental melon   1000
바나나     4  philippines          banana    500

Boolean 인덱싱

  • bool 타입의 Series를 대입하면 True인 행 만 선택
  • Series 객체 비교연산자 값 이용하면 bool 타입의 series를 리턴
  • &와 |를 이용한 결합도 가능
  • isin([데이터 나열]): 데이터 안에 속하면 True 아니면 False를 리턴

 

실습

#price가 1000 ~ 1500이하인 데이터만 추출
print(item[item['price']<=1500])

#price가 1000 또는 500인 데이터
print(item[item['price'].isin([1000,500])])
#결과
	code  manufacture            name  price
사과      1        korea           apple   1500
참외      3        korea  oriental melon   1000
바나나     4  philippines          banana    500
레몬      5        korea           lemon   1500
망고      6        korea           mango    700
     code  manufacture            name  price
참외      3        korea  oriental melon   1000
바나나     4  philippines          banana    500

 

 

내용 확인

  • head와 tail: DataFrame의 데이터 중에서 앞이나 뒤에서 몇 개의 데이터를 확인하고자 할 때 사용 
  • shape: 행과 열의 개수를 tuple 형식으로 리턴
  • info(): DataFrame의 기본정보(데이터 유형, 행 인덱스의 구성, 열 이름, 각 열의 자료형과 데이터 개수, 메모리 사용량)를 리턴
  • dtypes: 각 열의 자료형 정보를 리턴
  • count(): 데이터의 개수
  • value_counts(): Series에서만 사용 가능. 고유한 값의 종류와 개수 정보 

describe(): 기술 통계 정보를 출력. 옵션이 없으면 숫자 데이터의 평균, 표준 편차, 최댓값, 최소값, 중간값 등을 출력. include = 'all'을 옵션으로 추가하면 숫자 데이터가 아닌 열의 unique, top, freq를 출력 

728x90