搜索
    上传资料 赚现金
    Pandas数据处理复习学案
    立即下载
    加入资料篮
    Pandas数据处理复习学案01
    Pandas数据处理复习学案02
    Pandas数据处理复习学案03
    还剩4页未读, 继续阅读
    下载需要5学贝
    使用下载券免费下载
    加入资料篮
    立即下载

    Pandas数据处理复习学案

    展开
    这是一份Pandas数据处理复习学案

    Pandas数据处理复习 1、读取数据和保存数据 pd.read_csv(filename):从CSV文件导入数据 pd.read_excel(filename):从Excel文件导入数据 df.to_csv(filename):导出数据到CSV文件 df.to_excel(filename):导出数据到Excel文件 选择数据 df.head(n):查看DataFrame对象的前n行 df.tail(n):查看DataFrame对象的最后n行 df[col]:根据列名选择某一列数据,并以Series的形式返回列,或者也可以用df.col,注意不需要加引号 df[[col1, col2]]:选择多列数据,以DataFrame形式返回多列,多列的列名需要[ ]括起来 根据条件进行选择,方法是:df[条件],例如df[df[col] > 0.5]:选择col列的值大于0.5的行,[ ]里面列数据要加上数据源,而不能只写列名,df[col > 0.5] 这样写是错误的 如果索引是0开始的数字,则可以通过索引切片来选择相应的行 df[0:] #第0行及之后的行,相当于df的全部数据,注意冒号是必须的 df[:2] #第2行之前的数据(不含第2行) df[0:1] #第0行 df[1:3] #第1行到第2行(不含第3行) df[-1:] #最后一行 数据处理 排序分组 df.sort_values(col1):按照列col1排序数据,默认升序排列 df.sort_values(col2, ascending=False):按照列col1降序排列数据 df.sort_values([col1,col2], ascending=[True,False]):先按列col1升序排列,后按col2降序排列数据 df.groupby(col):返回一个按列col进行分组的Groupby对象 df.groupby([col1,col2]):返回一个按多列进行分组的Groupby对象 删除空值的行或列(一般的题目很少看到) df.dropna():删除所有包含空值的行,括号中默认参数为axis=0,表示对行操作 df.dropna(axis=1):删除所有包含空值的列 计算,这些计算方法对原数据可以用,对分组排序后的数据都可以用 df.describe():查看数据值列的汇总统计 df.mean():返回所有列的均值 df.count():返回每一列中的非空值的个数 df.max():返回每一列的最大值 df.min():返回每一列的最小值 具体实例及结果(上表是源数据) 1、读取数据 df=pd.read_excel("销售数据.xlsx") print(df) #输出原始数据 (结果显示,原来的列名-》列标题,并且自动添加索引,从0开始) 书名 作者 译作者 出版社 原价 售价 数量 销售额 0 双城记 查尔斯·狄更斯 李妍 中国华侨出版社 39.8 24.9 1.0 NaN 1 局外人 阿尔贝·加缪 馨文 中国华侨出版社 22.8 14.3 1.0 NaN 2 夜莺与玫瑰 奥斯卡·王尔德 张炽恒 开明出版社 46.0 28.8 1.0 NaN 3 鲁滨孙漂流记 丹尼尔·笛福 辛怡 开明出版社 39.8 28.7 1.0 NaN 4 Python基础教程 Magnus Lie Hetland 袁国忠 清华大学出版社 99.0 69.8 2.0 NaN 5 算法导论 Thomas H.Cormen等 殷建平等 清华大学出版社 128.0 102.4 1.0 NaN 2、计算(这种计算非常简单,不需要考虑一个个相乘,直接用列数据相乘就可以了,数据自己会一一对应。 df.销售额=df.售价*df.数量 书名 作者 译作者 出版社 原价 售价 数量 销售额 0 双城记 查尔斯·狄更斯 李妍 中国华侨出版社 39.8 24.9 1.0 24.9 1 局外人 阿尔贝·加缪 馨文 中国华侨出版社 22.8 14.3 1.0 14.3 2 夜莺与玫瑰 奥斯卡·王尔德 张炽恒 开明出版社 46.0 28.8 1.0 28.8 3 鲁滨孙漂流记 丹尼尔·笛福 辛怡 开明出版社 39.8 28.7 1.0 28.7 4 Python基础教程 Magnus Lie Hetland 袁国忠 清华大学出版社 99.0 69.8 2.0 139.6 5 算法导论 Thomas H.Cormen等 殷建平等 清华大学出版社 128.0 102.4 1.0 102.4 3、分别查看各种数据,注意数据都是有索引的 书名 作者 0 双城记 查尔斯·狄更斯 1 局外人 阿尔贝·加缪 2 夜莺与玫瑰 奥斯卡·王尔德 3 鲁滨孙漂流记 丹尼尔·笛福 4 Python基础教程 Magnus Lie Hetland 5 算法导论 Thomas H.Cormen等 >>> df["书名"] >>>df[["书名","作者"]] 0 双城记 1 局外人 2 夜莺与玫瑰 3 鲁滨孙漂流记 4 Python基础教程 5 算法导论 Name: 书名, dtype: object 带索引,且是Series结构 带索引,且是DataFrame结构 >>> df.index #一维结构 Int64Index([0, 1, 2, 3, 4, 5], dtype='int64') >>> df.columns #一维结构 Index(['书名', '作者', '译作者', '出版社', '原价', '售价', '数量', '销售额'], dtype='object') >>> df.values #如果是DataFrame数据结果,即有多列数据,df.values应该是个二维数组 array( [['双城记', '查尔斯·狄更斯', '李妍', '中国华侨出版社', 39.8, 24.9, 1, 24.9], ['局外人', '阿尔贝·加缪', '馨文', '中国华侨出版社', 22.8, 14.3, 1, 14.3], ['夜莺与玫瑰', '奥斯卡·王尔德', '张炽恒', '开明出版社', 46.0, 28.8, 1, 28.8], ['鲁滨孙漂流记', '丹尼尔·笛福', '辛怡', '开明出版社', 39.8, 28.7, 1, 28.7], ['Python基础教程', 'Magnus Lie Hetland', '袁国忠', '清华大学出版社', 99.0, 69.8, 2, 139.6], ['算法导论', 'Thomas H.Cormen等', '殷建平等', '清华大学出版社', 128.0, 102.4, 1, 102.4]] , dtype=object) 如果要逐个访问这3个属性里面的值,一般用for循环配合,如下面代码 双城记 局外人 夜莺与玫瑰 鲁滨孙漂流记 Python基础教程 算法导论 for i in df.index: #访问每个索引 print(i) 扩展应用,利用索引输出每一本书的名字 for i in df.index: print(df.at[i,"书名"]) #或者:print(df.["书名"][i]) 李妍 馨文 张炽恒 辛怡 袁国忠 殷建平等 或者直接通过遍历某列的值,比如实现上面同样的结果 for i in df.书名: print(i) 假如现在要通过values属性来访问某些值,例如 for a in df.values: #用a代表值当中的每一项 print(a[2]) #输出译作者 总结:由此我们一定要看清楚for后面的值范围,迭代变量每次代表的值是什么。 4、数据计算(分组前)(常用函数的使用,这是数据的笼统使用,看看下面的几个框中的结果,最大值,最小值,统计个数不管是“文字”类型、“数值”类型,都有,但是平均分只有数值类型,文字数据自动忽略平均值了,假如原数据中只有一列是数值型数据,这样就可以得出了) >>> df.mean() 原价 62.566667 售价 44.816667 数量 1.166667 销售额 56.450000 dtype: float64 注意:文字列数据没有平均值,只有数值列才有,结果也是一维结构 >>> df.count() 书名 6 作者 6 译作者 6 出版社 6 原价 6 售价 6 数量 6 销售额 6 dtype: int64 一维 >>> df.max() #每一列的最大值 书名 鲁滨孙漂流记 作者 阿尔贝·加缪 译作者 馨文 出版社 清华大学出版社 原价 128.0 售价 102.4 数量 2 销售额 139.6 dtype: object #一维结构 对于上面的元数据求值计算,我们可以加上具体列标题就可以计算指定的数值 >>> df.原价.max() 128.0 >>> df["原价"].max() 128.0 >>> 数据分组后计算 >>> df.groupby("出版社") #直接看不到数据,需要循环迭代 ('中国华侨出版社', 书名 作者 译作者 出版社 原价 售价 数量 销售额 0 双城记 查尔斯·狄更斯 李妍 中国华侨出版社 39.8 24.9 1 24.9 1 局外人 阿尔贝·加缪 馨文 中国华侨出版社 22.8 14.3 1 14.3) ('开明出版社', 书名 作者 译作者 出版社 原价 售价 数量 销售额 2 夜莺与玫瑰 奥斯卡·王尔德 张炽恒 开明出版社 46.0 28.8 1 28.8 3 鲁滨孙漂流记 丹尼尔·笛福 辛怡 开明出版社 39.8 28.7 1 28.7) ('清华大学出版社', 书名 作者 译作者 出版社 原价 售价 数量 销售额 4 Python基础教程 Magnus Lie Hetland 袁国忠 清华大学出版社 99.0 69.8 2 139.6 5 算法导论 Thomas H.Cormen等 殷建平等 清华大学出版社 128.0 102.4 1 102.4) 我们一般不直接用这些数据,而是用分组之后的数据进行计算统计,例如 >>> g1=df.groupby("出版社").mean() #默认情况下,分组字段是作为索引的 >>> g2=df.groupby("出版社",as_index=False).mean() #以出版社分组计算平均值,注意参数as_index=False >>> g1 原价 售价 数量 销售额 出版社 中国华侨出版社 31.3 19.60 1.0 19.60 开明出版社 42.9 28.75 1.0 28.75 清华大学出版社 113.5 86.10 1.5 121.00 >>> g2 #有新索引 出版社 原价 售价 数量 销售额 0 中国华侨出版社 31.3 19.60 1.0 19.60 1 开明出版社 42.9 28.75 1.0 28.75 2 清华大学出版社 113.5 86.10 1.5 121.00 >>> g1.index #分组依据就是索引 Index(['中国华侨出版社', '开明出版社', '清华大学出版社'], dtype='object', name='出版社') >>> g2.index #分组依据不作为索引,索引重新生成,从0开始 Int64Index([0, 1, 2], dtype='int64') 而且仔细看输出数据,形式都不一样,特别是分组字段 数据排序(以另外数据作为说明) >>> df5 #原数据 name team Q1 Q2 Q3 Q4 0 liver E 89 21 24 64 1 Arry C 36 37 37 57 2 Ack A 57 60 18 84 3 Eorge C 93 96 71 78 4 Oah D 65 49 61 86 >>> df5.sort_values("team") #以一列数据升序 Name team Q1 Q2 Q3 Q4 2 Ack A 57 60 18 84 1 Arry C 36 37 37 57 3 Eorge C 93 96 71 78 4 Oah D 65 49 61 86 0 liver E 89 21 24 64 >>> df5.sort_values(["team","Q1"]) #以两列数据排序 name team Q1 Q2 Q3 Q4 2 Ack A 57 60 18 84 1 Arry C 36 37 37 57 3 Eorge C 93 96 71 78 4 Oah D 65 49 61 86 0 liver E 89 21 24 64 #以两列数据都降序 ,如果参数改成:ascending = [False,True],结果会怎样 >>> df5.sort_values(by = ['team','Q1'], ascending = False) name team Q1 Q2 Q3 Q4 0 liver E 89 21 24 64 4 Oah D 65 49 61 86 3 Eorge C 93 96 71 78 1 Arry C 36 37 37 57 2 Ack A 57 60 18 84 排序之后一般是为了取前面或后面几个 >>>df2= df.sort_values("销售额",ascending=False) >>> df5.tail(2) #取尾几个 name team Q1 Q2 Q3 Q4 3 Eorge C 93 96 71 78 4 Oah D 65 49 61 86 >>> df5.head(2) #取前几个 name team Q1 Q2 Q3 Q4 0 liver E 89 21 24 64 1 Arry C 36 37 37 57 >>> df7=df5.drop("Q1",axis=1) >>> df7 name team Q2 Q3 Q4 0 liver E 21 24 64 1 Arry C 37 37 57 2 Ack A 60 18 84 3 Eorge C 96 71 78 4 Oah D 49 61 86 #删除Q1列数据,必须加axis=1,否则出错 几个非常重要的参数(以上面的数据为例) >>> df6=df5.drop(0,axis=0) >>> df6 name team Q1 Q2 Q3 Q4 1 Arry C 36 37 37 57 2 Ack A 57 60 18 84 3 Eorge C 93 96 71 78 4 Oah D 65 49 61 86 1、axis参数的使用 2、as_index参数,是否作为索引,默认值是True,特别是分组的时候经常用到,上面有例子说明 3、ignore_index,是否忽略索引,默认值是False,看例子(忽略自身的索引) >>> df5.append({"name":"fde","team":"D","Q1":45,"Q2":54,"Q3":38,"Q4":68},ignore_index=True) >>> df5[:2:3] #索引切片,可以选择指定范围内的行 name team Q1 Q2 Q3 Q4 0 liver E 89 21 24 64 name team Q1 Q2 Q3 Q4 0 liver E 89 21 24 64 1 Arry C 36 37 37 57 2 Ack A 57 60 18 84 3 Eorge C 93 96 71 78 4 Oah D 65 49 61 86 >>> f5.sort_values("Q4",ignore_index=True) name team Q1 Q2 Q3 Q4 0 Arry C 36 37 37 57 1 liver E 89 21 24 64 2 Eorge C 93 96 71 78 3 Ack A 57 60 18 84 4 Oah D 65 49 61 86 忽略了原来的索引,重新生成索引 5 fde D 45 54 38 68 >>> df5.sort_values("Q4") name team Q1 Q2 Q3 Q4 1 Arry C 36 37 37 57 0 liver E 89 21 24 64 3 Eorge C 93 96 71 78 2 Ack A 57 60 18 84 4 Oah D 65 49 61 86 注意:原来的索引乱了 补充axis=0(行),axis=1(列)相关例子 并增加一列“total”,计算每个人的总分、最高分(数据显示这是一维的数据结构) >>> max=df.max(axis=1) >>> max 0 198 1 167 2 219 3 338 4 261 dtype: int64 >>> total=df.sum(axis=1) #只计算数值类型的数据 >>> total 0 396 1 334 2 438 3 676 4 522 dtype: int64 >>> df["total"]=df[["Q1","Q2","Q3","Q4"]].sum(axis=1) #指定计算哪几列,注意参数axis=1 name team Q1 Q2 Q3 Q4 total 0 liver E 89 21 24 64 198 1 Arry C 36 37 37 57 167 2 Ack A 57 60 18 84 219 3 Eorge C 93 96 71 78 338 4 Oah D 65 49 61 86 261 4、ascending排序时默认升序,即ascending=True,前面有例子 5、inplace 是否在原地修改数据,默认值时inplace=False,即不修改 7.Excel 文件 cj.xlsx 中的数据包含“准考证号”、“姓名”、“学号”、“班级”、“总分”字 段,以及若干个数据行。则下列程序段执行后对象 df 中的数据将( A) import pandas as pd df=pd.read_excel("cj.xlsx") df.append({"准考证号":"2059618","姓名":"李雷","学号":"35","班级":"213","总分":560},ignore_index=True) df.drop("学号",axis=1) df.sort_values("班级") A.与从 Excel 中读取时保持一致,没有变化 B.减少“学号”列数据 C.按照“班级”升序排序 D.最后增加了一行“李雷”同学的相关数据 作图:先确定数据来源,然后在选择作图类型,所以作图的时候务必要搞清楚作图前的数据样子,是分组前的原始数据,还是分组后的数据,分组依据是索引,还是作为普通数据,作图时一定要搞清楚x轴是第一列数据,后面都是y轴数据,当然你可以进行选择。 书名 作者 译作者 出版社 原价 售价 数量 销售额 0 双城记 查尔斯·狄更斯 李妍 中国华侨出版社 39.8 24.9 1.0 24.9 1 局外人 阿尔贝·加缪 馨文 中国华侨出版社 22.8 14.3 1.0 14.3 2 夜莺与玫瑰 奥斯卡·王尔德 张炽恒 开明出版社 46.0 28.8 1.0 28.8 3 鲁滨孙漂流记 丹尼尔·笛福 辛怡 开明出版社 39.8 28.7 1.0 28.7 4 Python基础教程 Magnus Lie Hetland 袁国忠 清华大学出版社 99.0 69.8 2.0 139.6 5 算法导论 Thomas H.Cormen等 殷建平等 清华大学出版社 128.0 102.4 1.0 102.4 >>> df.plot(kind="bar") #第一列数据是x轴 >>> plt.show() >>> g1=df.groupby("出版社").mean() #默认情况下,分组字段是作为索引的 >>> g2=df.groupby("出版社",as_index=False).mean() #以出版社分组计算平均值,注意参数 >>> g1.plot(kind="bar") >>> plt.show() >>> x=df["书名"] >>> y=df["销售额"] >>> plt.bar(x,y) >>> plt.show() 自己再总结作图的两种方法。 书名作者译作者出版社原价售价数量销售额双城记查尔斯·狄更斯李妍中国华侨出版社39.824.91局外人阿尔贝·加缪馨文中国华侨出版社22.814.31夜莺与玫瑰奥斯卡·王尔德张炽恒开明出版社4628.81鲁滨孙漂流记丹尼尔·笛福辛怡开明出版社39.828.71机器学习周志华 清华大学出版社88662Python基础教程Magnus Lie Hetland袁国忠清华大学出版社9969.82算法导论Thomas H.Cormen等殷建平等清华大学出版社128102.41人工智能
    相关学案

    信息技术必修1 数据与计算3.2 Python语言程序设计导学案: 这是一份信息技术必修1 数据与计算3.2 Python语言程序设计导学案,共5页。

    高中信息技术浙教版 (2019)必修1 数据与计算2.2 算法的控制结构学案: 这是一份高中信息技术浙教版 (2019)必修1 数据与计算2.2 算法的控制结构学案,共2页。

    高中粤教版 (2019)2.2.1 信息系统的输入功能导学案: 这是一份高中粤教版 (2019)2.2.1 信息系统的输入功能导学案,共2页。

    免费资料下载额度不足,请先充值

    每充值一元即可获得5份免费资料下载额度

    今日免费资料下载份数已用完,请明天再来。

    充值学贝或者加入云校通,全网资料任意下。

    提示

    您所在的“深圳市第一中学”云校通为试用账号,试用账号每位老师每日最多可下载 10 份资料 (今日还可下载 0 份),请取消部分资料后重试或选择从个人账户扣费下载。

    您所在的“深深圳市第一中学”云校通为试用账号,试用账号每位老师每日最多可下载10份资料,您的当日额度已用完,请明天再来,或选择从个人账户扣费下载。

    您所在的“深圳市第一中学”云校通余额已不足,请提醒校管理员续费或选择从个人账户扣费下载。

    重新选择
    明天再来
    个人账户下载
    下载确认
    您当前为教习网VIP用户,下载已享8.5折优惠
    您当前为云校通用户,下载免费
    下载需要:
    本次下载:免费
    账户余额:0 学贝
    首次下载后60天内可免费重复下载
    立即下载
    即将下载:0份资料
    • 充值学贝下载 90%的用户选择 本单免费
    • 扫码直接下载
    选择教习网的 4 个理由
    • 更专业

      地区版本全覆盖, 同步最新教材, 公开课⾸选;1200+名校合作, 5600+⼀线名师供稿

    • 更丰富

      涵盖课件/教案/试卷/素材等各种教学资源;500万+优选资源 ⽇更新5000+

    • 更便捷

      课件/教案/试卷配套, 打包下载;手机/电脑随时随地浏览;⽆⽔印, 下载即可⽤

    • 真低价

      超⾼性价⽐, 让优质资源普惠更多师⽣

    开票申请 联系客服
    本次下载需要:0学贝 0学贝 账户剩余:0学贝
    本次下载需要:0学贝 原价:0学贝 账户剩余:0学贝
    了解VIP特权
    您当前为VIP用户,已享全站下载85折优惠,充值学贝可获10%赠送

        扫码支付后直接下载

        0元

        扫码支付后直接下载

        使用学贝下载资料比扫码直接下载优惠50%
        充值学贝下载,本次下载免费
        了解VIP特权
        • 微信
        • 支付宝

        微信扫码支付

        支付宝扫码支付(支持花呗)

        到账0学贝
        • 微信
        • 支付宝

        微信扫码支付

        支付宝扫码支付 (支持花呗)

          下载成功

          Ctrl + Shift + J 查看文件保存位置

          若下载不成功,可重新下载,或查看 资料下载帮助

          本资源来自成套资源

          更多精品资料

          正在打包资料,请稍候…

          预计需要约10秒钟,请勿关闭页面

          服务器繁忙,打包失败

          请联系右侧的在线客服解决

          单次下载文件已超2GB,请分批下载

          请单份下载或分批下载

          支付后60天内可免费重复下载

          我知道了
          正在提交订单

          欢迎来到教习网

          • 900万优选资源,让备课更轻松
          • 600万优选试题,支持自由组卷
          • 高质量可编辑,日均更新2000+
          • 百万教师选择,专业更值得信赖
          微信扫码注册
          qrcode
          二维码已过期
          刷新

          微信扫码,快速注册

          还可免费领教师专享福利「樊登读书VIP」

          手机号注册
          手机号码

          手机号格式错误

          手机验证码 获取验证码

          手机验证码已经成功发送,5分钟内有效

          设置密码

          6-20个字符,数字、字母或符号

          注册即视为同意教习网「注册协议」「隐私条款」
          QQ注册
          手机号注册
          微信注册

          注册成功

          下载确认

          下载需要:0 张下载券

          账户可用:0 张下载券

          立即下载

          如何免费获得下载券?

          加入教习网教师福利群,群内会不定期免费赠送下载券及各种教学资源, 立即入群

          返回
          顶部