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

2023년6월5일 판다스공부

by 착실하게 2023. 6. 6.
반응형
import pandas as pd 

# 학습 전 실행: csv파일 (data.csv) 생성 
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())

##########################################
# loc[인덱스명]
print(df.loc[1])
# df.loc['라떼'] # 이런식으로 인덱스명은 문자열이 될수도 있다.
# 인덱스명으로 프린트하면, 세로로 컬럼명이 나오고 해당 행이 세로로 나온다. 아래와 같은 형태임. 
# 메뉴 카페라떼
# 가격 4600
# 할인율 0.1
# 칼로리 180 

# iloc[인덱스번호]
print(df.iloc[1]) # 이렇게 하는 것도 위와 동일한 출력 결과가 나온다 

# 컬럼 선택해서 슬라이싱
# loc[인덱스명, 컬럼명]
print(df.loc[:,'가격']) #Name: 가격 
print(df.iloc[:,1]) #Name: 1 이라고 나오고 나머지는 동일함

# print(df.loc(['라떼':'모카','가격':'칼로리'])) #loc 는 마지막을 포함 
print(df.iloc[1:3,1:]) #iloc는 맨 끝은 비포함 

print(df.loc[1:2,'가격':'칼로리'])
print(df.iloc[1:3,1:])

print(df.loc[0])

print(df.loc[:,'가격'])

print(df.loc[1,'가격'])

# 저장되어 있는 컬럼의 순서에 따라 잘 적어줘야 한다.
print(df.loc[2,'가격':'메뉴'])
print(df.loc[2,'메뉴':'가격'])
# 이 두가지는 서로 다른 결과가 출력 된다. 

# 연속된 컬럼이 아니면 list 형태로 슬라이싱 
print(df.loc[2,['메뉴','칼로리']])

print(df.loc[1:2,['메뉴','가격']])

# iloc 는 인덱스의 번호로 찾는다 

print(df.iloc[0])
print(df.iloc[:,1])
print(df.iloc[2,0:2]) # iloc는 뒤에꺼 비포함! 

import numpy as np 

df['원두'] = np.nan
print(df.head())

df.loc[0,'원두'] = '콜롬비아'
print(df.head())

# 데이터 행추가 방법 (1)
# df.loc['인덱스명'] = [컬럼개수 맞춰서 데이터입력]
df.loc['시즌'] = ['크리스마스라떼',6000,0,500,'한국']
print(df)

# 데이터 행추가 방법 (2)
# 인덱스명은 중복불가능. 
#딕셔너리 형태로 넣으면 컬럼 갯수 안 맞춰도 들어감. 키값에 매칭시켜 데이터 넣기 때문. 
df.loc[7] = {'메뉴':'에스프레소','가격':2000,'칼로리':10}

# 소팅
# 인덱스에 str, int 섞여 있으면 소팅 못함
df = df.drop('시즌',axis=0)
print(df)

# 원래도 인덱스 순으로 소팅되기 때문에 내림차순 해보기 # 기본으로 ascending = True 로 되어있음. 
df = df.sort_index(ascending=False)
print(df)
#컬럼순 정렬
df = df.sort_values('가격')
print(df)
df = df.sort_values('가격',ascending=False)
print(df)
#기준 여러개로 정렬 

df = df.sort_values(['가격','메뉴'],ascending=[False,True]) # 가격은 내림차순, 메뉴는 오름차순 (가나다순)
print(df)

# df = df.reset_index()
# print(df)
df = df.reset_index(drop=True)
print(df)

##########################################

 

집에서 하니깐 너모너모 잘 안된다 

미친듯이 낮은 효율 ㄷㄷ 

내일은 꼭!! 스터디카페에 가서 해야겠다. 꼭 가려고 회원권 결제도 바로 해버렸음. 하여튼간에 뭔가 결제하는건 참 쉽다 ㅠ 

 

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())

#1
print(df.iloc[:3])
print(df.loc[:2])

#2
print(df.loc[1:2,'메뉴':'할인율'])
print(df.iloc[1:3,0:3])

#3
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],
}
df = pd.DataFrame(data)

print(df)

df = df.sort_values('가격',ascending=False)
print(df.head(3))
print(df.iloc[:3]) # 이 둘은 같은 결과임

 

 

반응형

댓글