Pandas 入门 15 题
- 1. 相关知识点
- 1.1 修改DataFrame列名
- 1.2 获取行列数
- 1.3 显示前n行
- 1.4 条件数据选取值
- 1.5 创建新列
- 1.6 删去重复的行
- 1.7 删除空值的数据
- 1.9 修改列名
- 1.10 修改数据类型
- 1.11 填充缺失值
- 1.12 数据上下合并
- 1.13 pivot_table透视表的使用
- 1.14 melt透视表的使用
- 1.15 条件查询及排序
- 2. 题目
- 2.1 从表中创建 DataFrame((Pandas 数据结构)
- 2.2 获取 DataFrame 的大小(数据检验)
- 2.3 显示前三行(数据检验)
- 2.4 数据选取(数据选取)
- 2.5 创建新列(数据选取)
- 2.6 删去重复的行(数据清理)
- 2.7 删去丢失的数据(数据清理)
- 2.8 修改列(数据清理)
- 2.9 重命名列(数据清理)
- 2.10 改变数据类型(数据清理)
- 2.11 填充缺失值(数据清理)
- 1.12 重塑数据:连结(表格重塑)
- 1.13 数据重塑:透视(表格重塑)
- 2.14 重塑数据:融合(表格重塑)
- 2.15 方法链(高级技巧)
1. 相关知识点
1.1 修改DataFrame列名
data=pd.DataFrame(student_data,columns=['student_id','age'])
1.2 获取行列数
players.shape
1.3 显示前n行
employees.head(n)
1.4 条件数据选取值
students.loc[students['student_id']==101,['name','age']]
students[students['student_id']==101][['name','age']]
students.query('`student_id`==101')[['name','age']]
1.5 创建新列
- 处理数据的时候,根据已知列得到新的列,可以考虑使用
pandas.DataFrame.assign()
函数 - 使用assign函数不会改变原数据,而是返回一个新的DataFrame对象,包含所有现有列和新生成的列
- 注意:assign和apply函数的主要区别在于前者不改变原数据,apply函数是在原数据的基础上添加新列
employees['bonus']=employees['salary'].apply(lambda x:x*2)
employees=employees.assign(bonus=employees.salary*2)
employees['bonus']=employees['salary']*2
1.6 删去重复的行
customers.drop_duplicates(subset=['email'],keep='first')
1.7 删除空值的数据
# axis=0代表行
students.dropna(subset=['name'],how='any', axis=0,inplace = False)
1.9 修改列名
data=data.rename(columns={'Dest':'iata_code','index':'from'})
students.columns=['student_id','first_name','last_name','age_in_years']
1.10 修改数据类型
students['grade']=students['grade'].astype('int')
1.11 填充缺失值
products['quantity'].fillna(0,inplace=True)
# products.replace({'quantity':{
# None:0
# }},inplace=True)
1.12 数据上下合并
df1._append(df2)
# pd.concat([df1,df2],axis=0)
1.13 pivot_table透视表的使用
weather.pivot_table(index='month',values='temperature',columns='city',aggfunc='sum')
1.14 melt透视表的使用
- df.pivot() 将长数据集转换成宽数据集,df.melt() 则是将宽数据集变成长数据集
pd.melt(report,id_vars['product'],var_name='quarter',value_name='sales')
1.15 条件查询及排序
animals[animals['weight'] > 100].sort_values(by='weight', ascending=False)
2. 题目
2.1 从表中创建 DataFrame((Pandas 数据结构)
import pandas as pd
def createDataframe(student_data: List[List[int]]) -> pd.DataFrame:
data=pd.DataFrame(student_data,columns=['student_id','age'])
return data
student_data=[[1,15],[2,11],[3,11],[4,20]]
print(createDataframe(student_data))
2.2 获取 DataFrame 的大小(数据检验)
import pandas as pd
def getDataframeSize(players: pd.DataFrame) -> List[int]:
return list(players.shape)
2.3 显示前三行(数据检验)
import pandas as pd
def selectFirstRows(employees: pd.DataFrame) -> pd.DataFrame:
return employees.head(3)
2.4 数据选取(数据选取)
import pandas as pd
def selectData(students: pd.DataFrame) -> pd.DataFrame:
return students.loc[students['student_id']==101,['name','age']]
# return students[students['student_id']==101][['name','age']]
# return students.query('`student_id`==101')[['name','age']]
2.5 创建新列(数据选取)
import pandas as pd
def createBonusColumn(employees: pd.DataFrame) -> pd.DataFrame:
employees['bonus']=employees['salary'].apply(lambda x:x*2)
# employees=employees.assign(bonus=employees.salary*2)
# employees['bonus']=employees['salary']*2
return employees
2.6 删去重复的行(数据清理)
import pandas as pd
def dropDuplicateEmails(customers: pd.DataFrame) -> pd.DataFrame:
return customers.drop_duplicates(subset=['email'],keep='first')
2.7 删去丢失的数据(数据清理)
import pandas as pd
def dropMissingData(students: pd.DataFrame) -> pd.DataFrame:
# axis=0代表行
return students.dropna(subset=['name'],how='any', axis=0,inplace = False)
2.8 修改列(数据清理)
import pandas as pd
def modifySalaryColumn(employees: pd.DataFrame) -> pd.DataFrame:
employees=employees.assign(salary=employees.salary*2)
# employees['salary']=employees['salary'].apply(lambda x:x*2)
# employees['salary']=employees['salary']*2
return employees
2.9 重命名列(数据清理)
import pandas as pd
def renameColumns(students: pd.DataFrame) -> pd.DataFrame:
students.columns=['student_id','first_name','last_name','age_in_years']
# dic={
# 'id':'student_id',
# 'first':'first_name',
# 'last':'last_name',
# 'age':'age_in_years'}
# students=students.rename(columns=dic)
return students
2.10 改变数据类型(数据清理)
import pandas as pd
def changeDatatype(students: pd.DataFrame) -> pd.DataFrame:
students['grade']=students['grade'].astype('int')
return students
2.11 填充缺失值(数据清理)
import pandas as pd
def fillMissingValues(products: pd.DataFrame) -> pd.DataFrame:
products['quantity'].fillna(0,inplace=True)
# products['quantity']=products['quantity'].fillna(0)
# products.replace({'quantity':{
# None:0
# }},inplace=True)
return products
1.12 重塑数据:连结(表格重塑)
import pandas as pd
def concatenateTables(df1: pd.DataFrame, df2: pd.DataFrame) -> pd.DataFrame:
return df1._append(df2)
# return pd.concat([df1,df2],axis=0)
1.13 数据重塑:透视(表格重塑)
import pandas as pd
def pivotTable(weather: pd.DataFrame) -> pd.DataFrame:
return weather.pivot_table(index='month',values='temperature',columns='city',aggfunc='sum')
# return weather.set_index(['month','city']).unstack()['temperature
2.14 重塑数据:融合(表格重塑)
import pandas as pd
def meltTable(report: pd.DataFrame) -> pd.DataFrame:
report=pd.melt(report,id_vars=['product'],var_name='quarter',value_name='sales')
return report
2.15 方法链(高级技巧)
import pandas as pd
def findHeavyAnimals(animals: pd.DataFrame) -> pd.DataFrame:
animals = animals[animals['weight'] > 100].sort_values(by='weight', ascending=False)
return animals[['name']]