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 pddef 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 pddef getDataframeSize(players: pd.DataFrame) -> List[int]:return list(players.shape)
2.3 显示前三行(数据检验)
import pandas as pddef selectFirstRows(employees: pd.DataFrame) -> pd.DataFrame:return employees.head(3)
2.4 数据选取(数据选取)
import pandas as pddef 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 pddef 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']*2return employees
2.6 删去重复的行(数据清理)
import pandas as pddef dropDuplicateEmails(customers: pd.DataFrame) -> pd.DataFrame:return customers.drop_duplicates(subset=['email'],keep='first')
2.7 删去丢失的数据(数据清理)
import pandas as pddef dropMissingData(students: pd.DataFrame) -> pd.DataFrame:# axis=0代表行return students.dropna(subset=['name'],how='any', axis=0,inplace = False)
2.8 修改列(数据清理)
import pandas as pddef 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']*2return employees
2.9 重命名列(数据清理)
import pandas as pddef 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 pddef changeDatatype(students: pd.DataFrame) -> pd.DataFrame:students['grade']=students['grade'].astype('int')return students
2.11 填充缺失值(数据清理)
import pandas as pddef 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 pddef 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 pddef 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 pddef 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 pddef findHeavyAnimals(animals: pd.DataFrame) -> pd.DataFrame:animals = animals[animals['weight'] > 100].sort_values(by='weight', ascending=False)return animals[['name']]