본문 바로가기
IT,SW,Data,Cloud,코딩/Python

2023년6월5일 파이썬공부 - 퇴근후딴짓님의 인프런 강의 따라치면서 배우기

by 착실하게 2023. 6. 5.
반응형

시리즈 ㅡ 데이터프레임의 하위 자료형. 한 개의 열. 딕셔너리의 key 값이 index가 되고, value값이 값이 된다. 

데이터프레임 ㅡ 여러 개의 시리즈가 모여서 데이터 프레임을 형성함.

 

import pandas as pd
# data = {
#     "메뉴":['아메리카노','카페라떼','카페모카', '바닐라라떼', '녹차', '초코라떼', '바닐라콜드브루'],
#     "가격":[4100, 4600, 4600, 5100, 4100, 5000, 5100],
#     "할인율":[0.5, 0.1, 0.2, 0.3, 0, 0, 0],
#     "칼로리":[10, 180, 420, 320, 20, 500, 400],
# }
# data = pd.DataFrame(data)
# data.to_csv('data.csv', index=False)

df = pd.read_csv('data.csv')
print(df.head())
# print(df.tail(3))

# 시리즈 만들기 (문자열)
menu = pd.Series(['아아','아라','바콜'])
print(menu)

price = pd.Series([2000,3000,4000])
print(price)

#시리즈를 엮어서 데이터프레임 만들기
df = pd.DataFrame({
  "menu": menu,
  "price": price
})

print(df)
print(df['menu'])

# 데이터 프레임 만들기 pd.DataFrame({"컬럼명":데이터})
data = {
    "메뉴":['아메리카노','카페라떼','카페모카'],
    "가격":[4100,4600,4600],
    "할인율":[0.5, 0.1, 0.2],
    "칼로리":[10, 180, 420],
}
cafe = pd.DataFrame(data)
print(cafe)

print(cafe['가격']) #Series로 선택한 코드 
print(cafe[['가격']]) #데이터프레임으로 선택한 코드 

print(type(df))
# print(type(df['가격'])) #에러남
print(type(cafe['가격']))

판다스 공부하기 

 

import pandas as pd 
#############################################
# EDA

# 데이터 불러오기 
df = pd.read_csv('data.csv')
# 데이터 프레임 크기 (행,컬럼)
print(df.shape) # shape: 괄호 없음!
print(df.info())#null,type 확인 
print(df.describe()) #기초통계 
# 디폴트로 수치형은 기초통계 볼수있음
print(df.describe( include='O')) #기초통계 
# 범주형 데이터 기초통계 보려면 이렇게 하면 된다. 

print(df.corr(numeric_only=True))
# 상관관계 구할때 numeric_only= False 가 디폴트가 되어버림. 그러면 에러남. 그래서 True 넣어주니깐 결과가 에러없이 나왔다. 

# 중복 값이 있는 데이터 생성
car = {
    "car":['Sedan','SUV','Sedan','SUV','SUV','SUV','Sedan','Sedan','Sedan','Sedan','Sedan'],
    "size":['S','M','S','S','M','M','L','S','S', 'M','S']
}
car = pd.DataFrame(car)
print(car.head(3)) 
# nunique # 항목별 종류수
print(car.nunique())
# unique # Series의 속성이다. #그래서 컬럼을 지정해줘야함
print(car['car'].unique())
print(car['size'].unique())

#항목별 개수 (car)
print(car['car'].value_counts())
print(car['size'].value_counts())


# 데이터 프레임 만들기 (할인율과 칼로리 -> 문자열)
data = {
    "메뉴":['아메리카노', '카페라떼', '카페모카', '바닐라콜드브루'],
    "가격":[4100, 4600, 4600, 5100],
    "할인율":['0.5', '0.1', '0.2', '0.3'],
    "칼로리":[10,180,420,320],
}
df = pd.DataFrame(data)
print(df.info())

df['할인율'] = df['할인율'].astype('float')
print(df.info())

# DataFrame에 새로운 컬럼 추가 
df['new'] = 0
print(df)
df['할인가'] = df['가격'] * (1-df['할인율'])
print(df)
#결측값으로 추가하기#이거 하려면 넘파이 필요함 
import numpy as np 
df['원두'] = np.nan
print(df)

# 데이터 삭제
# 행방향, 열방향 삭제 가능
# 행방향: axis=0, 열방향: axis=1
# 열 삭제 
df = df.drop('new',axis=1) 
print(df)
# 행 삭제 
df = df.drop(1,axis=0)
print(df)
# 인덱스는 자동으로 땡겨지지 않고 그대로 1 이 없는 채로 남아 있네

df.to_csv('data2.csv',index=False)
#변수명에다가 써야함! 
#pd.read_csv
#df.to_csv 

new_df = pd.read_csv('data2.csv')
print(new_df.head())

 

판다스 퀴즈 

 

import pandas as pd 
# 주어진 데이터
data = {
    "메뉴":['아메리카노', '카페라떼', '카페모카', '바닐라콜드브루'],
    "가격":[4100, 4600, 4600, 5100],
    "할인율":['0.5', '0.1', '0.2', '0.3'],
    "칼로리":[10,180,420,320],
}
df = pd.DataFrame(data)
print(df.head())

# 이벤트가 컬럼 만들기 
# 원 가격의 50% 할인을 적용한 이벤트 가격 

df['이벤트가'] = df['가격'] * 0.5 
print(df.head())

# df['할인가'] = df['가격'] * df['할인율']
# 그냥 이렇게 하니까 컬럼갯수가 엄청 늘어나버렸음
# 왜냐면 할인율이 스트링으로 되어 있기 때문임

df['할인율'] = df['할인율'].astype(float)
df['할인가'] = df['가격'] * (1-df['할인율'])
print(df.head())

df = df.drop('칼로리',axis=1)
print(df.head())

 

오늘의 꿀팁: 생각한 대로 연산이 이루어지지 않으면 string, int 등의 타입을 확인 해보자. 

반응형

댓글