leetcode pandas数据分析入门题答案分享

pandas


创建Dataframe

直接对列表使用pd.DataFrame就可以创建Dataframe

力扣

import pandas as pd
​
def createDataframe(student_data: List[List[int]]) -> pd.DataFrame:
    columns = ['student_id', 'age']
    df = pd.DataFrame(student_data, columns=columns)
    
    return df

获取Dataframe形状大小

len(df)返回行数,len(df.columns)返回列数,df.shape()返回行数和列数

力扣

2878. 获取 DataFrame 的大小 - 力扣(LeetCode)

image-20231020183902156

import pandas as pd
​
def getDataframeSize(players: pd.DataFrame) -> List[int]:
    row = len(players)
    col = len(players.columns)
​
    return [row, col]

获取指定行数

df.head()返回前五个数据,df.iloc[:, :]根据索引取值,返回指定的选择数据,df.loc[]根据名称取值,返回指定的数据。

力扣

2879. 显示前三行 - 力扣(LeetCode)

image-20231020183647788

import pandas as pd
​
def selectFirstRows(employees: pd.DataFrame) -> pd.DataFrame:
    return employees.iloc[:3]

填补空缺值

pandas数据清洗:案例详解 fillna函数 填补空缺值pandas fillna点绛蓝的博客-CSDN博客

image-20231020170537151

力扣

2887. 填充缺失值 - 力扣(LeetCode)

image-20231020171523992

import pandas as pd
​
def fillMissingValues(products: pd.DataFrame) -> pd.DataFrame:
    products['quantity'] = products['quantity'].fillna(value=0)
​
    return products

数据选取

对数据的选取是最常用的操作,一般通过bool索引对数据进行选取

力扣

2880. 数据选取 - 力扣(LeetCode)

image-20231020184122969

import pandas as pd
​
def selectData(students: pd.DataFrame) -> pd.DataFrame:
    df = students[students['student_id'] == 101]
    return df.iloc[:, 1:3]

image-20231020184339409

import pandas as pd
​
def createBonusColumn(employees: pd.DataFrame) -> pd.DataFrame:
    employees['bonus'] = employees['salary'] * 2
    
    return employees

删去重复行

df.drop_duplicates(),经常会遇到需要对数据进行清洗的操作,一般两种方法,创建新df,对原有的df进行原地操作。原地操作一般使用df.drop_duplicates(subset, keep, inplace)

力扣

2882. 删去重复的行 - 力扣(LeetCode)

image-20231020184724884

import pandas as pd
​
def dropDuplicateEmails(customers: pd.DataFrame) -> pd.DataFrame:
    customers.drop_duplicates(subset='email', keep='first', inplace=True)
    return customers
​
# 作者:力扣官方题解
# 链接:https://leetcode.cn/problems/drop-duplicate-rows/
# 来源:力扣(LeetCode)
# 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

删除缺失值

和上一个差不多的操作,只是删除缺失值可以直接使用dropna()函数,所以怀疑dropna其实就是drop_duplicates进行封装以后的操作,所以猜测dropna的参数和drop_duplicates的参数是一样的。

力扣

2883. 删去丢失的数据 - 力扣(LeetCode)

image-20231020185103941

import pandas as pd
​
def dropMissingData(students: pd.DataFrame) -> pd.DataFrame:
    return students.dropna(subset='name')

修改列

修改列的操作和下面的创建新列是相同使用方法,修改列选取指定的列,进行对应的操作,比如乘法,修改数据类型。

力扣

2884. 修改列 - 力扣(LeetCode)

image-20231020185520719

import pandas as pd
​
def modifySalaryColumn(employees: pd.DataFrame) -> pd.DataFrame:
    employees['salary'] = employees['salary'] * 2
    return employees

创建新列

创建新列和对当前已有的列进行操作也是最常用的操作,一般选取需要操作的列,然后使用对应的操作函数就可以了

2881. 创建新列 - 力扣(LeetCode)

重命名列

主要使用rename方法,df.rename(columns={"source":"new"}, inplace)

力扣

2885. 重命名列 - 力扣(LeetCode)

image-20231020185803225

import pandas as pd
​
def renameColumns(students: pd.DataFrame) -> pd.DataFrame:
    students.rename(columns={"id":"student_id", "first":"first_name","last":"last_name", "age":"age_in_years"}, inplace=True)
    
    return students

改变数据类型

和之前的修改列一样的操作,astype方法, df['col'] = df['col'].astype()

力扣

2886. 改变数据类型 - 力扣(LeetCode)

image-20231020190035259

import pandas as pd
​
def changeDatatype(students: pd.DataFrame) -> pd.DataFrame:
    students['grade'] = students['grade'].astype(int)
​
    return students

拼接

Python - pandas DataFrame数据的合并与拼接(merge、join、concat)_padas 合并两个dataframe-CSDN博客


merge

  1. merge方法主要基于两个dataframe的共同列进行合并;

    2.merge主要是对两个Dataframe进行横向拼接,df = pd.merge(left, right, how, on)

join

1.join方法是基于index连接dataframe,merge方法是基于column连接,连接方法有内连接,外连接,左连接和右连接,与merge一致。

2.df = df1.join(df2)

concat

1.concat方法是拼接函数,有行拼接和列拼接,默认是行拼接,拼接方法默认是外拼接(并集),拼接的对象是pandas数据类型。

2.concat可以实现纵向拼接

3.df = pd.concat([df1, df2], axis, join)

2888. 重塑数据:连结 - 力扣(LeetCode)

image-20231020173715043

​
import pandas as pd
​
def concatenateTables(df1: pd.DataFrame, df2: pd.DataFrame) -> pd.DataFrame:
    df = pd.concat([df1, df2])
​
    return df
​

数据重塑

透视

pivot

2889. 数据重塑:透视 - 力扣(LeetCode)

image-20231020175345831

import pandas as pd
​
def pivotTable(weather: pd.DataFrame) -> pd.DataFrame:
    ans = weather.pivot(index='month', columns='city', values='temperature')
    return ans
​
#作者:力扣官方题解
#链接:https://leetcode.cn/problems/reshape-data-pivot/
#来源:力扣(LeetCode)
#著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

融合

melt

方法链

力扣

image-20231020190420574

import pandas as pd
​
def findHeavyAnimals(animals: pd.DataFrame) -> pd.DataFrame:
    df = animals[animals['weight'] > 100]
    df = df.sort_values(by='weight', ascending=False)
    df = df['name']
    return pd.DataFrame(df)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值