데이터 사이언스, 인공지능의 기본 미덕인 Pandas의 기본을 익혀보려
Leetcode의 Study Plan중 Introduction to Pandas를 풀어보았다
사실 파이썬 할줄알면 하루만에 15문제 다 풀수 있을텐데
나는 일주일에 3문제씩 5주간 천천히 풀었다
풀면서 알아야할 문법을 정리 해보겠다
2877. Create a DataFrame from List
import pandas as pd
def createDataframe(student_data: List[List[int]]) -> pd.DataFrame:
student_data_df=pd.DataFrame(student_data,columns=['student_id','age'])
return student_data_df
List로 input을 받아서 판다스 데이터프레임으로 변환, 생성 하는 방법이다
pd.DataFrame({List},columns=[{column_names}])로 설정해주면
생성된다
2878. Get the Size of a DataFrame
import pandas as pd
def getDataframeSize(players: pd.DataFrame) -> List[int]:
df_rows, df_cols = players.shape
return [df_rows,df_cols]
Data Frame 의 차원을 return하는 방법인데
df.shape
row,col의 tuple로 return 됨을 주의해야한다
2879. Display the First Three Rows
import pandas as pd
def selectFirstRows(employees: pd.DataFrame) -> pd.DataFrame:
return employees.head(3)
.Head({num_of_rows}) 를 사용하면 상위 Row들을 볼 수 있다
2880. Select Data
import pandas as pd
def selectData(students: pd.DataFrame) -> pd.DataFrame:
df = students[students['student_id']==101]
return df[['name', 'age']]
df[df[{col_name}]=={condition}] 을 사용하면 원하는 조건의 row들만 추출해낼 수 있다
그리고 return 할때 df[[{col_names}]]를 통해 원하는 열만 추출 할 수 있다
2881. Create a New Column
import pandas as pd
def createBonusColumn(employees: pd.DataFrame) -> pd.DataFrame:
employees['bonus']=employees['salary']*2
return employees
새로운 열을 만들때 그냥 새로운 열 이름 정의해 데이터를 넣어주면 된다
2882. Drop Duplicate Rows
import pandas as pd
def dropDuplicateEmails(customers: pd.DataFrame) -> pd.DataFrame:
customers=customers.drop_duplicates(subset='email')
return customers
df.drop_duplicates(subset={col_name})
해주면 subset 열들 기준으로 중복된 row들을 drop해준다
2883. Drop Missing Data
import pandas as pd
def dropMissingData(students: pd.DataFrame) -> pd.DataFrame:
return students.dropna(subset=['name'])
결측값 있는 행들을 제외하려면
df.dropna(subset=[{column_names}]
하면된다
2885. Rename Columns
import pandas as pd
def renameColumns(students: pd.DataFrame) -> pd.DataFrame:
students=students.rename(columns={'id':'student_id','first':'first_name','last':'last_name','age':'age_in_years'})
return students
기존 Data Frame의 column명들을 바꿔주려면
df.rename(columns={old_column:new_column}
이런식으로 나열해주면 된다
2886. Change Data Type
import pandas as pd
def changeDatatype(students: pd.DataFrame) -> pd.DataFrame:
students['grade']=students['grade'].astype(int)
return students
타입 변환, 캐스팅 해주려면
.astype({data_type})
해주면 된다
2887. Fill Missing Data
import pandas as pd
def fillMissingValues(products: pd.DataFrame) -> pd.DataFrame:
products.fillna(value={'quantity': 0}, inplace=True)
return products
결측값을 특정 값으로 채워넣고싶으면
df.fillna(value={column:value},inplace=True)
로 대체해주면 된다
2888. Reshape Data: Concatenate
import pandas as pd
def concatenateTables(df1: pd.DataFrame, df2: pd.DataFrame) -> pd.DataFrame:
return pd.concat([df1, df2], axis=0, ignore_index=True)
pd.concat([{df_to_concat}], axis=0, ignore_index=True)
여기서 axis=0은 평행하게 2 개의 row를 한개의 row로 즉 row-wise concatenation이고
axis=1은 그 반대로 vertical한 column-wise이다
그리고 ignore_index=True면 df1, df2 기존 index들 상관없이
다시0부터 시작되는 것이다
2889. Reshape Data: Pivot
import pandas as pd
def pivotTable(weather: pd.DataFrame) -> pd.DataFrame:
weather=weather.pivot(index='month',columns='city',values='temperature')
return weather
df.pivot(index=, columns, values=)
로 pivot테이블 을 생성할 수 있다
2890. Reshape Data: Melt
import pandas as pd
def meltTable(report: pd.DataFrame) -> pd.DataFrame:
# Unpivot the DataFrame
unpivoted_df = pd.melt(report, id_vars=['product'], value_vars=['quarter_1',
'quarter_2', 'quarter_3', 'quarter_4'], var_name='quarter', value_name='sales')
return unpivoted_df
pd.melt(df, id_vars=[], value_vars=[], var_name=, value_name=)
으로 pivot의 반대 과정인 melting을 할 수 있다
2891. Method Chaining
def findHeavyAnimals(animals: pd.DataFrame) -> pd.DataFrame:
over100=animals.loc[animals['weight']>100].sort_values(by='weight', ascending=False)[['name']]
return over100
ainmals중 'weight'가 100넘는 애들을 무게로 내림차순으로 정렬해 이름만 출력하고플떄
Method Chaining으로 한번에 할 수 있다
이렇게 15개 문제를 푼 후 문법을 알아보았고
Pandas의 기본을 다지기 위한 기초 문제들로 좋은 것 같다!
'컴퓨터공학 > 인공지능' 카테고리의 다른 글
분류기 성능지표들과 ROC Curve, Confusion Matrix (1) | 2024.12.06 |
---|---|
저수지 샘플링 Reservoir Sampling (2) | 2024.10.23 |
Custom Convnets 특수 제작 Convnet (79) | 2024.08.14 |
Stride CNN, 보폭 (82) | 2024.08.13 |
Maximum Pooling 최대값 풀링 (79) | 2024.08.07 |