python数据处理常用语法示例-(pandas)

算是总结下pandas,numpy的一些基本、实用使用语法,基于一个学生信息表的样例数据。
文章结构为jupyter代码+返回截图。

实用技巧:jupyter 代码自动补全
anaconda 安装jupyter
jupyter代码自动补全:
1、pip install jupyter_contrib_nbextensions(在anaconda的命令窗口下)
2、jupyter contrib nbextension install --user --skip-running-check(在anaconda的命令窗口下)
3、点开 Nbextensions 的选项,并勾选 Hinterland(此步完成)

numpy,pandas这一块的用法很多,个人觉得记住常用的用法,对于一些不常使用的用法,混个脸熟,真正用的时候自动匹配,看看参数大概就有数了。

导入包:

import numpy as np
import pandas as pd 
from pandas import Series,DataFrame

使用字典方式创建dataframe对象:

#创建班级,学生,兴趣爱好,考试科目,学号,考试成绩的表
studentdata = pd.DataFrame({
    
    '姓名':['alici','bob','cindy','dave','kopper'],
                          '学号':[100001,100002,100003,100005,100006],
                          '爱好':['篮球','足球','篮球','排球','足球'],
                           '科目':['语文','语文','数学','数学','语文'],
                           '成绩':np.random.randint(60,150,size=5)}
                          )
studentdata

在这里插入图片描述

设置索引

#修改学号为索引
studentdata.set_index(keys='学号',inplace=True)
studentdata

在这里插入图片描述
修改一个学生的成绩为空,用dave的成绩替换

#修改一个学生的成绩为空,用dave的成绩替换
studentdata.loc[100001,'成绩'] = np.nan
studentdata
studentdata.loc[100001,'成绩'] = studentdata.loc[100005,'成绩']
studentdata

在这里插入图片描述
在这里插入图片描述
增加一个空的学号,无数据

#增加一个空的学号,无数据
studentdata.loc[100007,:] = np.nan
studentdata

在这里插入图片描述
删除空行

#删除空行
studentdata.dropna(axis=0,how='any',inplace=True)
studentdata

在这里插入图片描述
添加一行相同的记录

#添加一行相同的记录
studentdata.loc[100008,:] = studentdata.loc[100001,:]
studentdata

在这里插入图片描述
查询重复记录

#查询重复记录
studentdata.duplicated(subset=['姓名','爱好','科目','成绩'])

在这里插入图片描述
删除重复的记录

#删除重复的记录
studentdata.drop_duplicates(subset=['姓名','爱好','科目','成绩'],inplace=True)
studentdata

在这里插入图片描述
计算学生的平均成绩

studentdata.loc[:,'成绩'].mean()

在这里插入图片描述
分组统计各科目的平均成绩

#分组统计各科目的平均成绩
stdatamean = studentdata.groupby(by='科目')[['成绩']].mean()
stdatamean

在这里插入图片描述
将平均成绩添加到最后一列

#将平均成绩添加到最后一列
studentdata =studentdata.merge(stdatamean,left_on='科目',right_index=True,suffixes=['','_平均'])  #注意此处suffixes的用法
studentdata

在这里插入图片描述
重置索引

#将索引列重新作为列(恢复到数字索引)   #区分索引的三个操作:reindex(),set_index(),reset_index()
studentdata.reset_index(inplace=True)
studentdata

在这里插入图片描述
map映射

#使用map映射,根据成绩判断是否及格,向map中传入函数
def isok(score):
    if score >= 90:
        return '是'
    else:
        return '否'
studentdata['是否及格'] = studentdata['成绩'].map(isok)
studentdata

在这里插入图片描述

#使用映射对爱好和科目进行编号
maps = {
    
    '篮球':200001,
        '足球':200002,
        '排球':200003,
        '语文':300001,
        '数学':300002 
}
studentdata.replace(maps,inplace=True)
studentdata

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_42377217/article/details/115337832