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)
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[]根据名称取值,返回指定的数据。
力扣
import pandas as pd def selectFirstRows(employees: pd.DataFrame) -> pd.DataFrame: return employees.iloc[:3]
填补空缺值
pandas数据清洗:案例详解 fillna函数 填补空缺值pandas fillna点绛蓝的博客-CSDN博客
力扣
import pandas as pd def fillMissingValues(products: pd.DataFrame) -> pd.DataFrame: products['quantity'] = products['quantity'].fillna(value=0) return products
数据选取
对数据的选取是最常用的操作,一般通过bool索引对数据进行选取
力扣
import pandas as pd def selectData(students: pd.DataFrame) -> pd.DataFrame: df = students[students['student_id'] == 101] return df.iloc[:, 1:3]
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)
力扣
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的参数是一样的。
力扣
import pandas as pd def dropMissingData(students: pd.DataFrame) -> pd.DataFrame: return students.dropna(subset='name')
修改列
修改列的操作和下面的创建新列是相同使用方法,修改列选取指定的列,进行对应的操作,比如乘法,修改数据类型。
力扣
import pandas as pd def modifySalaryColumn(employees: pd.DataFrame) -> pd.DataFrame: employees['salary'] = employees['salary'] * 2 return employees
创建新列
创建新列和对当前已有的列进行操作也是最常用的操作,一般选取需要操作的列,然后使用对应的操作函数就可以了
重命名列
主要使用rename方法,df.rename(columns={"source":"new"}, inplace)
力扣
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()
力扣
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
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)
import pandas as pd def concatenateTables(df1: pd.DataFrame, df2: pd.DataFrame) -> pd.DataFrame: df = pd.concat([df1, df2]) return df
数据重塑
透视
pivot
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
方法链
力扣
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)