当前位置: 首页 > news >正文

章节2 行走数据江湖,只需一行代码

目录

  • 6. 函数填充,计算列
    • 6.1 excel操作
    • 6.2 pandas操作1
    • 6.3 pandas操作2
  • 8. 数据筛选、过滤,[绘图前的必备功课]
    • 8.1 excel操作
    • 8.2 Python操作

http://sa.mentorx.net 蔓藤教育

6. 函数填充,计算列

书的编号、书的名字、标价、折扣、最终价钱
在这里插入图片描述
最终价钱Price=ListPrice * Discount = 标价 * 折扣

6.1 excel操作

在这里插入图片描述

6.2 pandas操作1

import pandas as pdbooks = pd.read_excel('C:/Temp/Books.xlsx', index_col='ID')
print(books)

在这里插入图片描述
填充Price列,在excel中我们操作的是单元格,而pandas中我们操作的是列

  • 操作符的重载:比如下面的 *(乘号操作符),当它左右两边是两列时,它就把两列前后对其,一个单元格乘以一个单元格的乘起来。
import pandas as pdbooks = pd.read_excel('C:/Temp/Books.xlsx', index_col='ID')
books['Price'] = books['ListPrice'] * books['Discount']
print(books)

在这里插入图片描述
乘以 一个数也是可以的:

import pandas as pdbooks = pd.read_excel('C:/Temp/Books.xlsx', index_col='ID')
books['Price'] = books['ListPrice'] * 0.8
print(books)

在这里插入图片描述
用循环来迭代DataFrame:(有点类似excel的单元格对单元格操作)

import pandas as pdbooks = pd.read_excel('C:/Temp/Books.xlsx', index_col='ID')
for i in books.index:books['Price'].at[i] = books['ListPrice'].at[i] * books['Discount'].at[i]
print(books)

在这里插入图片描述
运算的时候,不想从头到尾运算,而是从其中的某一段开始运算

import pandas as pdbooks = pd.read_excel('C:/Temp/Books.xlsx', index_col='ID')
for i in range(5, 16):books['Price'].at[i] = books['ListPrice'].at[i] * books['Discount'].at[i]
print(books)

在这里插入图片描述

6.3 pandas操作2

现在,每本书要涨价2元,

import pandas as pdbooks = pd.read_excel('C:/Temp/Books.xlsx', index_col='ID')
books['ListPrice'] = books['ListPrice'] + 2
print(books)

在这里插入图片描述
调用series的apply()函数来实现上面的功能:

import pandas as pddef add_2(x):return x + 2
books = pd.read_excel('C:/Temp/Books.xlsx', index_col='ID')
books['ListPrice'] = books['ListPrice'].apply(add_2)
print(books)

将得到上图同样的结果。
进一步简化代码:

import pandas as pdbooks = pd.read_excel('C:/Temp/Books.xlsx', index_col='ID')
books['ListPrice'] = books['ListPrice'].apply(lambda x: x + 2)
print(books)

在这里插入图片描述

8. 数据筛选、过滤,[绘图前的必备功课]

8.1 excel操作

筛选,18<=年龄<=30的学生的分数状况,且分数>80的学生
在这里插入图片描述
全部选中,然后筛选即可。
在这里插入图片描述

8.2 Python操作

读取的时候,将 ‘ID’ 作为 index ,

import pandas as pdstudents = pd.read_excel('C:/Temp/Students.xlsx', index_col='ID')

在这里插入图片描述
筛选数据:用函数的形式来表达条件
pd.series有apply()方法,

import pandas as pdstudents = pd.read_excel('C:/Temp/Students.xlsx', index_col='ID')
students = students.loc[students['Age'].apply[age_18_to_30]]
print(students)

在这里插入图片描述

import pandas as pddef age_18_to_30(a):return 18 <= a <30def level_a(s):return 85 <=s <=100students = pd.read_excel('C:/Temp/Students.xlsx', index_col='ID')
students = students.loc[students['Age'].apply[age_18_to_30]].loc[students['Score'].apply(level_a)]
print(students)

在这里插入图片描述
另一种写法:

students = students.loc[students.Age.apply[age_18_to_30]].loc[students.Score.apply(level_a)]

在这里插入图片描述
进一步优化代码:

students = students.loc[students.Age.apply[lambda a: 18<=a<30]].loc[students.Score.apply(lambda s: 85<=s<=100)]

在这里插入图片描述
代码太长,可以打一个 空格+ ’ \ ',然后回车即可

students = students.loc[students.Age.apply[lambda a: 18<=a<30]] \
.loc[students.Score.apply(lambda s: 85<=s<=100)]
http://www.lryc.cn/news/45625.html

相关文章:

  • springboot集成xx-job;
  • 35岁,失业6个月终于接到降薪offer:有面就面,薪酬不限,随机应变说瞎话,对奇葩面试官保持礼貌克制,为拿offer什么都能忍...
  • 如何有效管理项目进度 都有哪些解决方法
  • 互联网随想(三) 光纤与电路交换
  • electron之旅(二)react使用
  • ChatGPT基础知识系列之Prompt
  • SpringBoot3 - Spring Security 6.0 Migration
  • 【新2023Q2模拟题JAVA】华为OD机试 - 最少停车数
  • 《代码实例前端Vue》Security查询用户列表,用户新增
  • CANopenNode学习笔记(一)--- README翻译
  • 关于Android 11、12和13服务保活问题
  • Java 泛型 使用案例
  • 进程与线程
  • 骑友,怎么挑选适合自己的赛事
  • 【Java 数据结构与算法】-遍历Map和Set的方式
  • 组件、套件、 中间件、插件
  • 自动化工具 pytest 内核测试平台落地初体验
  • Python 自动化指南(繁琐工作自动化)第二版:四、列表
  • 大数据领域的发展及其对现实世界的价值
  • 几种常见的架构模式
  • flutter安装各种问题汇总
  • 网络传输层
  • linux内核启动分析(二)
  • 『EasyNotice』.NET开源消息通知组件——快速实现邮件/钉钉告警通知
  • JVM垃圾回收算法
  • 怎么看待ChatGPT封号这件事呢?
  • 八、交换技术原理
  • 什么是DHCP?DHCP有什么用?(中科三方)
  • 算法设计-二分
  • 隧道技术基础