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

章节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 pd

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

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

  • 操作符的重载:比如下面的 *(乘号操作符),当它左右两边是两列时,它就把两列前后对其,一个单元格乘以一个单元格的乘起来。
import pandas as pd

books = pd.read_excel('C:/Temp/Books.xlsx', index_col='ID')
books['Price'] = books['ListPrice'] * books['Discount']
print(books)

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

import pandas as pd

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

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

import pandas as pd

books = 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 pd

books = 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 pd

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

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

import pandas as pd

def 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 pd

books = 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 pd

students = pd.read_excel('C:/Temp/Students.xlsx', index_col='ID')

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

import pandas as pd

students = 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 pd

def age_18_to_30(a):
	return 18 <= a <30

def level_a(s):
	return 85 <=s <=100

students = 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.kler.cn/a/7250.html

相关文章:

  • 数据结构-排序课后题
  • 【NLP】ELMO、GPT、BERT、BART模型解读及对比分析
  • C语言#define定义宏
  • nvim 打造成可用的IDE(2)
  • SQL UNION 操作符
  • 从预训练的BERT中提取Embedding
  • windows 解决惠普主机核显无法输入VGA、HDMI信号问题
  • MATLAB结构化程序设计
  • MySQL 存储引擎
  • Java设计模式(九)外观模式
  • mongodb和mysql双写数据一致性问题
  • 如何提高逻辑思维,亲测,这3个方法有效
  • C++封装详解——从原理到实践
  • 实验四 配置OSPF协议
  • 投资大咖说,消费产业3个升级方向
  • java 重试
  • Python怎么学最高效
  • “我做测试开发的这一年多,月薪5K变成了24K”
  • 【前端面试题——微信小程序】
  • VUE3 学习笔记(六)Post 实现文件下载(Delphi 后台)
  • 【软件设计师06】数据结构与算法基础
  • 朴素贝叶斯程序
  • 【从零开始学习 UVM】12.2、UVM RAL(续更) —— RAL Model 结构
  • Linux系统【Centos7】更新内核更新软件详细教程
  • 详细介绍雷达到达角估计算法3DFFT,DBF,MUSIC,Capon的原理、对比、各自的优势
  • 【新2023Q2模拟题JAVA】华为OD机试 - 预订酒店