딕셔너리는 키(key)와 값(value)으로 구성된 자료 구조
키:값
a = {
'마이클 잭슨': '하루 6시간씩 꾸준히 춤 연습을 했어요.',
'김연아': '공중 세바퀴 회전 1번 실패하면 65번씩 연습했어요.',
'박태환': '하루에 15,000km 이상 수영해야 세계적인 선수들과 겨룰 수 있어요'
}
김연아 명언만 출력하시오
print(a['김연아'])
print(a.keys()) # dict_keys(['마이클 잭슨', '김연아', '박태환'])
print(a.values()) # dict_values(['하루 6시간씩 꾸준히 춤 연습을 했어요.', '공중 세바퀴 회전 1번 실패하면 65번씩 연습했어요.', '하루에 15,000km 이상 수영해야 세계적인 선수들과 겨룰 수 있어요'])
print(a.items()) # dict_items([('마이클 잭슨', '하루 6시간씩 꾸준히 춤 연습을 했어요.'), ('김연아', '공중 세바퀴 회전 1번 실패하면 65번씩 연습했어요.'), ('박태환', '하루에 15,000km 이상 수영해야 세계적인 선수들과 겨룰 수 있어요')])
for i in a.items():
print(i) # 키값만: print(i[0]) # 값만: print(i[1])
# ('마이클 잭슨', '하루 6시간씩 꾸준히 춤 연습을 했어요.')
# ('김연아', '공중 세바퀴 회전 1번 실패하면 65번씩 연습했어요.')
# ('박태환', '하루에 15,000km 이상 수영해야 세계적인 선수들과 겨룰 수 있어요')
a['신유빈'] = '내가 늘 하던데로 하면 긴장이 안돼요'
print(a)
a 딕셔너리에 양궁선수 안산 선수의 명언을 입력하시오
a['안산'] = '쫄지말고 대충쏴 ~'
# print(a)
for i in a.items():
print(i[0], ':', i[1])
# 마이클 잭슨 : 하루 6시간씩 꾸준히 춤 연습을 했어요.
# 김연아 : 공중 세바퀴 회전 1번 실패하면 65번씩 연습했어요.
# 박태환 : 하루에 15,000km 이상 수영해야 세계적인 선수들과 겨룰 수 있어요
# 신유빈 : 내가 늘 하던데로 하면 긴장이 안돼요
# 안산 : 쫄지말고 대충쏴 ~
우리 반 학생들의 과목별 점수를 저장한 딕셔너리에서 각 학생의 평균 점수를 계산하여 새로운 딕셔너리를 만드세요.
round(값, 자릿수)
ex. round(값, 1): 소수점 첫번째 자리까지 남겨두고 반올림
student_scores = {
'김철수': {'국어': 85, '수학': 90, '영어': 78},
'이영희': {'국어': 92, '수학': 88, '영어': 95},
'박지성': {'국어': 75, '수학': 82, '영어': 90},
'최유리': {'국어': 88, '수학': 95, '영어': 70},
'정민호': {'국어': 94, '수학': 80, '영어': 85}
}
b = {} # 빈 딕셔너리 생성
for name, scores in student_scores.items():
b[name] = round(sum(scores.values())/len(scores.values()), 1)
print(b)
# 결과: {'김철수': 84.3, '이영희': 91.7, '박지성': 82.3, '최유리': 84.3, '정민호': 86.3}
print(b)
import pandas as pd
df2 = pd.DataFrame(b.items(), columns=['이름', '점수'])
df2 # {'김철수': 84.3, '이영희': 91.7, '박지성': 82.3, '최유리': 84.3, '정민호': 86.3}
# 이름이 박지성인 사람의 점수를 출력
df2.loc[df2.이름 == '박지성', : ] # df2.loc[행,열]
이름 점수
2 박지성 82.3
student_scores = {
'김철수': {'국어': 85, '수학': 90, '영어': 78},
'이영희': {'국어': 92, '수학': 88, '영어': 95},
'박지성': {'국어': 75, '수학': 82, '영어': 90},
'최유리': {'국어': 88, '수학': 95, '영어': 70},
'정민호': {'국어': 94, '수학': 80, '영어': 85}
}
import pandas as pd
all_data = [] # 빈 리스트 생성
for name, scores in student_scores.items():
print(name, scores['국어'], scores['수학'], scores['영어'])
all_data.append([name, scores['국어'], scores['수학'], scores['영어']])
print(all_data)
df = pd.DataFrame(all_data, columns=['이름', '국어', '수학', '영어'])
df
# 오라클 성능 관련 중첩 딕셔너리
oracle_performance = {
'DB_SERVER_01': {
'CPU_사용률': 85.2,
'메모리_사용률': 72.5,
'디스크_IO': 1250,
'세션_수': 120,
'응답시간_ms': 45
},
'DB_SERVER_02': {
'CPU_사용률': 78.9,
'메모리_사용률': 68.3,
'디스크_IO': 980,
'세션_수': 95,
'응답시간_ms': 38
},
'DB_SERVER_03': {
'CPU_사용률': 92.1,
'메모리_사용률': 85.7,
'디스크_IO': 1580,
'세션_수': 145,
'응답시간_ms': 62
},
'DB_SERVER_04': {
'CPU_사용률': 65.4,
'메모리_사용률': 58.9,
'디스크_IO': 750,
'세션_수': 80,
'응답시간_ms': 28
},
'DB_SERVER_05': {
'CPU_사용률': 88.7,
'메모리_사용률': 79.2,
'디스크_IO': 1320,
'세션_수': 110,
'응답시간_ms': 52
}
}
import pandas as pd
all_data = [] # 빈 리스트 생성
for k, v in oracle_performance.items():
print(k, v['CPU_사용률'], v['메모리_사용률'], v['디스크_IO'], v['세션_수'], v['응답시간_ms'])
all_data.append([k, v['CPU_사용률'], v['메모리_사용률'], v['디스크_IO'], v['세션_수'], v['응답시간_ms']])
print(all_data)
df = pd.DataFrame(all_data, columns=['서버명', 'CPU_사용률', '메모리_사용률', '디스크_IO', '세션_수', '응답시간_ms'])
df
딕셔너리의 값이 여러개인 경우, 리스트 형식으로 구성하면 됨
salary = {
'초급': ['500만원~600만원', '0~3년'],
'중급': ['600만원~700만원', '3~6년'],
'고급': ['700만원~900만원', '6~9년']
}
salary['특급'] = ['900만원~1000만원', '9년~12년']
print(salary)
# {'초급': ['500만원~600만원', '0~3년'], '중급': ['600만원~700만원', '3~6년'], '고급': ['700만원~900만원', '6~9년'], '특급': ['900만원~1000만원', '9년~12년']}
import pandas as pd
grade = []
sal = []
care = []
for i in salary.items():
# print(i[0], i[1][0], i[1][1])
grade.append(i[0])
sal.append(i[1][0])
care.append(i[1][1])
all_data = [grade, sal, care]
print(all_data)
df = pd.DataFrame(all_data, index=['등급', '급여', '경력'])
df.T # df 데이터 프레임의 행과 열을 전치시킴
df2 = df.T
df2
department = {
'개발팀': ['1억 2천만원', '15명'],
'마케팅팀': ['8천만원', '10명'],
'영업팀': ['9천만원', '12명'],
'경영지원팀': ['6천만원', '8명']
}
import pandas as pd
team = [] # 부서
sal = [] # 예산
cnt = [] # 인원
for i in department.items():
team.append(i[0])
sal.append(i[1][0])
cnt.append(i[1][1])
all_data = [team, sal, cnt]
df = pd.DataFrame(all_data, index=['부서', '예산', '인원'])
df2 = df.T # 행 열 바꿈
df2
job = {'사라질 직업' : ['텔레마케터', '법률보조원']}
job['새로운 직업'] = ['자동화 구현 개발자', '딥러닝 개발자']
print(job)
# {'사라질 직업': ['텔레마케터', '법률보조원'], '새로운 직업': ['자동화 구현 개발자', '딥러닝 개발자']}
job['새로운 직업'].append('데이터 엔지니어')
job['사라질 직업'].append('운전기사')
print(job)
#{'사라질 직업': ['텔레마케터', '법률보조원', '운전기사'], '새로운 직업': ['자동화 구현 개발자', '딥러닝 개발자', '데이터 엔지니어']}
del job['사라질 직업'][2]
print(job)
# {'사라질 직업': ['텔레마케터', '법률보조원'], '새로운 직업': ['자동화 구현 개발자', '딥러닝 개발자', '데이터 엔지니어']}
여러개의 리스트의 데이터를 한번에 딕셔너리로 구성하여
비정형화된 데이터를 손쉽게 테이블 형태로 구성할 수 있음
artist = ['비틀즈', '비틀즈', '아이유', '아이유', '마이클 잭슨', '마이클 잭슨']
music = ['yesterday', 'imagine', '너랑나', '마슈멜로우', 'beat it', 'smooth criminal']
music_dict = {'비틀즈': [], '아이유' : [], '마이클 잭슨' : []}
for a, m in zip(artist, music):
music_dict[a].append(m) # 리스트[]니까 append 써줘야 됨
print(music_dict)
import pandas as pd
df = pd.DataFrame(list(music_dict.items()), columns=['가수', '음악'])
df
# 감독 리스트
directors = ['크리스토퍼 놀란', '크리스토퍼 놀란', '스티븐 스필버그',
'스티븐 스필버그', '마틴 스콜세지', '마틴 스콜세지']
# 영화 리스트
movies = ['인셉션', '다크 나이트', '쥬라기 공원', 'ET', '아이리시맨', '위대한 개츠비']
movies_dict = {'크리스토퍼 놀란': [], '스티븐 스필버그': [], '마틴 스콜세지': []}
for d, m in zip(directors, movies):
movies_dict[d].append(m)
print(movies_dict)
import pandas as pd
df = pd.DataFrame(list(movies_dict.items()), columns=['감독', '영화'])
df
딕셔너리는 데이터 분석에서 매우 중요한 자료형