실습
import pandas as pd
import numpy as np
#1. student_dict_list=[{'이름':'Jake','키':175,'성적':'A'},{'이름':'Jay','키':183,'성적':'B'}]가 주어졌을 때
#데이터 프레임을 형성하고, add_cm함수를 사용하여 키에 cm을 붙이시오.(10점)
student_dict_list=[{'이름':'Jake','키':175,'성적':'A'},{'이름':'Jay','키':183,'성적':'B'}]
df = pd.DataFrame(student_dict_list)
def add_cm(height):
return str(height) +'cm'
df['키'] = df['키'].apply(add_cm)
df
#2. 위의 자료를 이용하여 DataFrame을 만든 후,
#groupby함수를 이용하여 grade별로 학생을 나누어 각 grade를 받은 학생 수와 DataFrame을 <출력예시>와 같이 출력되도록 하시오.(10점)
students = [
{ "name" : "johanson", "age" : 23, "grade" : "B"},
{ "name" : "kelvin", "age" : 21, "grade" : "A"},
{ "name" : "smith", "age" : 22, "grade" : "F"},
{ "name" : "Jin", "age" : 20, "grade" : "A"},
{ "name" : "Chalie", "age" : 22, "grade" : "C"},
{ "name" : "Jackson", "age" : 21, "grade" : "B"},
{ "name" : "Michelle", "age" : 21, "grade" : "A"},
{ "name" : "Lisa", "age" : 24, "grade" : "F"}
]
df = pd.DataFrame(students)
grouped = df.groupby('grade')
for grade, group in grouped:
print(f"{grade} :",df.groupby('grade').size()[grade])
print(df.groupby('grade').get_group(grade))
print()
#3. <3번 출력 예시>와 같은 data frame이 출력되도록 코드를 작성하시오.(10점)
Fruits = [
{ "Fruit" : "Apple", "Amount" : 3, "Price" : "3000"},
{ "Fruit" : "Banana", "Amount" : 2, "Price" : "1500"},
{ "Fruit" : "Cherry", "Amount" : 10, "Price" : "7000"}
]
df = pd.DataFrame(Fruits)
df
#4.
df1 = pd.read_csv('laliga_records.txt', sep=" ")
df2 = pd.read_csv('pl_records.txt',sep=' ')
df = pd.concat([df2,df1], ignore_index = True)
df['Attack_pts'] = df['Goals'] + df['Assists']
df['Rating'] = ''
df.loc[df['Attack_pts'] >= 9, 'Rating'] = "Incredible"
df.loc[df['Attack_pts'] < 9, 'Rating'] = "Great"
df.loc[df['Attack_pts'] < 6, 'Rating'] = "Good"
df
df.to_csv('Total_records.csv',encoding='utf-8-sig')
이론
1. data frame의 각 row를 series 라고 한다.
o
2. df.filter(regex='b$',axis=1)
위 코드를 통해 데이터 프레임(df)의 header 중 b로 시작하는 column만 필터링할 수 있다.
x -> b로 끝나는 column만 필터링 한다.
3. 쉼표로 column을 구분하지 않고, 다른 delimeter를 사용한 txt파일을 pandas를 통해 불러올 때,
txt와 같은 방식으로 출력된다.
o -> txt와 같은 방식으로 colum이 구별되지않고 하나로 합쳐져서 출력된다.
4. student_dict_list=[{'이름':'Jake','국어':99,'수학':88,'영어':77},{'이름':'Jay','국어':95,'수학':34,'영어':66}]에서= drop함수를 이용해 jake에 해당하는 정보들을 지우고, inplace라는 명령어를 사용하면,
따로 정의할 필요 없이 바로 데이터 프레임에 적용된다.
o -> inplace = True 이면 바로 데이터 프레임에 적용된다.