T'SPACE

다채로운 에디터들의 이야기

컴퓨터공학/인공지능

Leetcode Introduction to Pandas 기본 문법 정리

Tonny Kang 2024. 10. 10. 09:50
반응형

 

데이터 사이언스, 인공지능의 기본 미덕인 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}]]를 통해 원하는 열만 추출 할 수 있다

728x90

 

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의 기본을 다지기 위한 기초 문제들로 좋은 것 같다!

반응형