Python自动化办公--Pandas玩转Excel数据分析【三】
相关文章:
Python自动化办公--Pandas玩转Excel数据分析【二】
python处理Excel实现自动化办公教学(含实战)【一】
python处理Excel实现自动化办公教学(含实战)【二】
python处理Excel实现自动化办公教学(数据筛选、公式操作、单元格拆分合并、冻结窗口、图表绘制等)【三】
python入门之后须掌握的知识点(模块化编程、时间模块)【一】
python入门之后须掌握的知识点(excel文件处理+邮件发送+实战:批量化发工资条)【二】
pandas玩转excel码源.zip-数据挖掘文档类资源-CSDN下载
1.线性回归,简单的数据预测
import pandas as pd
import matplotlib.pyplot as plt
from scipy.stats import linregress
sales = pd.read_excel('Sales.xlsx', dtype={'Month': str, 'Revenue': float})
print(sales)
slope, intercept, r_value, p_value, std_err = linregress(
sales.index, sales.Revenue) # 斜率 截距 R P 方差 sales.index, sales.Revenue分别为xy轴
exp = sales.index * slope + intercept #期望方程
plt.scatter(sales.index, sales.Revenue)
plt.plot(sales.index, exp, color='red')
plt.title(f"y={slope}*x+{intercept}")
plt.xticks(sales.index, sales.Month, rotation=90)
plt.show()
预测的话就直接输入x代入方程,这是deme仅供参考,更多的可以采用机器学习的一些算法进行求解。
2.条件格式【数据背景色设置,数据条、渐变色等】
Seaborn(seaborn是python中的一个可视化库,是对matplotlib进行二次封装而成,既然是基于matplotlib,所以seaborn的很多图表接口和参数设置与其很是接近)
导入库 import seaborn as sns
seaborn风格多变的另一大特色就是支持个性化的颜色配置。颜色配置的方法有多种,常用方法包括以下两个:
color_palette,基于RGB原理设置颜色的接口,可接收一个调色板对象作为参数,同时可以设置颜色数量;hls_palette,基于Hue(色相)、Luminance(亮度)、Saturation(饱和度)原理设置颜色的接口,除了颜色数量参数外,另外3个重要参数即是hls
import pandas as pd
import seaborn as sns
def low_score_red(s):
color="red" if s<60 else "black"
return f'color:{color}'
def highest_score_green(col):
return ["background-color:green" if s==col.max()
else 'background-color:white' for s in col]
students = pd.read_excel('Students5.xlsx', index_col='ID')
students.style.applymap(low_score_red,subset=['Test_1', 'Test_2', 'Test_3'])
#subset选择数据区域
students.style.applymap(low_score_red,subset=['Test_1', 'Test_2',
'Test_3']).apply(highest_score_green,subset=['Test_1', 'Test_2', 'Test_3'])
1.低于60分标红 2.最高分标绿(背景色)其余背景色为白色
渐变色设置:
import pandas as pd
import seaborn as sns
color_map=sns.light_palette('green', as_cmap=True)#调色板
students = pd.read_excel('Students5.xlsx', index_col='ID')
students.style.background_gradient(color_map,subset=['Test_1', 'Test_2', 'Test_3']) #subset选择数据区域
数据条设置
import pandas as pd
students = pd.read_excel('Students5.xlsx', index_col='ID')
students.style.bar(color="green",subset=['Test_1', 'Test_2', 'Test_3']) #subset选择数据区域
3.行操作集锦【插入、追加、删除、更改】
import pandas as pd
page_001 = pd.read_excel('Students6.xlsx', sheet_name='Page_001')
page_002 = pd.read_excel('Students6.xlsx', sheet_name='Page_002')
# 追加已有
students = page_001.append(page_002).reset_index(drop=True) # 重制index并删除原来的
students = pd.concat([page_001,page_002]).reset_index(drop=True)
# 追加新建
stu = pd.Series({'ID': 41, 'Name': 'Abel', 'Score': 90})
students = students.append(stu, ignore_index=True) # ignore_index
# 删除(可切片)
students = students.drop(index=[39, 40])
students = students.drop(index=students[0:10].index, inplace=True) # 切片删除
# 插入
stu = pd.Series({'ID': 100, 'Name': 'Bailey', 'Score': 100})
part1 = students[:21] # .iloc[] is the same
part2 = students[21:]
students = part1.append(stu, ignore_index=True).append(
part2).reset_index(drop=True)
# 更改两种方法直接改或者替换
students.at[39, "Name"] = "aaaa"
students.at[39, "Score"] = "120"
stu = pd.Series({'ID': 101, 'Name': 'Danni', 'Score': 101})
students.iloc[39] = stu
# 设置空值
for i in range(5, 15):
students['Name'].at[i] = ''
# 去掉空值
missing = students.loc[students['Name'] == ''] # loc索引
students.drop(missing.index, inplace=True)
print(students)
loc和at的区别:
loc可以取多个值,at只能取一个格子里面的值,
.loc[[start:end],[start:end]]和.iloc[[start:end],[start:end]]
区别在于.loc使用的是行列标签(定义的具体行名和列名),而.iloc使用的是行列整数位置(从零开始)
4.列操作集锦【插入、追加、删除、更改】
数据源参考3中
import pandas as pd
import numpy as np
page_001 = pd.read_excel('Students5.xlsx', sheet_name='Page_001')
page_002 = pd.read_excel('Students5.xlsx', sheet_name='Page_002')
# 合并列
# students = pd.concat([page_001,page_002]).reset_index(drop=True)
students = pd.concat([page_001, page_002], axis=1)
# 追加列
students['Age'] = 25
students['Age'] = np.repeat(25, len(students))
# 删除列
students.drop(columns=['Score', 'Age'], inplace=True)
# 插入列
students.insert(1, column='Foo', value=np.repeat('foo', len(students)))
# 改列名
students.rename(columns={'Foo': 'FOO', 'Name': 'NAME'}, inplace=True)
# 设置空值
students['ID'] = students['ID'].astype(float)
for i in range(5, 15):
students['ID'].at[i] = np.nan
# 去掉空值
students.dropna(inplace=True) # 横向读取每一行删除空值
print(students)
5.链接SQL.Server数据库
这里仅以链接SQL Server为例
关于mysql相关教学参考:
python pyodbc使用方法_Jack2013tong的博客-CSDN博客_pyodbc
建立与数据库的连接:sqlalchemy
SQLAlchemy 是 Python 著名的 ORM 工具包。通过 ORM,开发者可以用面向对象的方式来操作数据库,不再需要编写 SQL 语句。本篇不解释为什么要使用 ORM,主要讲解 SQLAlchemy 的用法。SQLAlchemy 支持多种数据库,除 sqlite 外,其它数据库需要安装第三方驱动
import pyodbc
import sqlalchemy
import pandas as pd
connection = pyodbc.connect('DRIVER={SQL Server}; SERVER=(local); DATABASE=AdventureWorks;USER=sa;PASSWORD=123456')
engine = sqlalchemy.create_engine('mssql+pyodbc://sa:123456@(local)/AdventureWorks?driver=SQL+Server')
query = 'SELECT FirstName, LastName FROM Person.Person'
df1 = pd.read_sql_query(query, connection)
df2 = pd.read_sql_query(query, engine)
pd.options.display.max_columns = 999
print(df1.head())
print(df2.head())
6.稍微复杂计算列【以计算长方形外接圆为例】
import pandas as pd
import numpy as np
def get_circumcircle_area(l, h):
r = np.sqrt(l ** 2 + h ** 2) / 2
return r ** 2 * np.pi
def wrapper(row):
return get_circumcircle_area(row['Length'], row['Height'])
rects = pd.read_excel('Rectangles.xlsx', index_col='ID')
rects['Circumcircle Area'] = rects.apply(wrapper, axis=1)
print(rects)
import pandas as pd
import numpy as np
def get_circumcircle_area(l, h):
r = np.sqrt(l ** 2 + h ** 2) / 2
return r ** 2 * np.pi
# def wrapper(row):
# return get_circumcircle_area(row['Length'], row['Height'])
rects = pd.read_excel('Rectangles.xlsx', index_col='ID')
rects['Circumcircle Area'] = rects.apply(lambda row:get_circumcircle_area(row['Length'], row['Height']), axis=1)
print(rects)
Length Height Circumcircle Area
ID
1 8 8 100.530965
2 9 4 76.183622
3 5 7 58.119464
4 6 4 40.840704
5 8 8 100.530965
6 7 5 58.119464
7 11 2 98.174770
8 13 4 145.298660
9 6 9 91.891585
10 11 5 114.668132
11 6 9 91.891585
12 10 8 128.805299
13 10 5 98.174770
14 9 9 127.234502
15 13 3 139.800873
16 8 8 100.530965
17 8 6 78.539816
18 7 7 76.969020
19 12 5 132.732290
20 5 4 32.201325
Python自动化办公--Pandas玩转Excel数据分析【三】的更多相关文章
- Python数据分析:pandas玩转Excel(三)
将对象写入Excel工作表. 要将单个对象写入 Excel .xlsx 文件,只需指定目标文件名即可.要写入多个工作表,必须创建具有目标文件名的ExcelWriter对象,并在文件中指定要写入的工作表 ...
- Python自动化办公知识点整理汇总
知乎上有人提问:用python进行办公自动化都需要学习什么知识呢? 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做案例的人,却 ...
- 20210105 - python自动化办公简介
新的一年开始了, 计划每周至少更新三篇博客. 人生苦短,如果不做改变,人生很快会过去!2021年寻求改变,加油! python自动化办公: 1.相关工具与环境的安装概要: 需要用到python(一种开 ...
- Python自动化办公:将文本文档内容批量分类导入Excel表格
序言 (https://jq.qq.com/?_wv=1027&k=GmeRhIX0) 它来了,它又来了. 本文实现用Python将文本文件自动保存到Excel表格里面去. 需求 将锦江区.t ...
- Python数据分析:pandas玩转Excel (一)
目录 1 pandas简介 2 导入 3 使用 4 读取.写入 1 pandas简介 1.Pandas是什么? Pandas是一个强大的分析结构化数据的工具集: 它的使用基础是Numpy(提供高性能的 ...
- Python数据分析:pandas玩转Excel (二)
1 对Excel文件的操作 方法一: 使用xlrd库或者xlwt库进行对excel表格的操作读与写: 方法二: pandas库同样支持excel的读写操作:且更加简便. 2 pd.read_excel ...
- Python自动化办公:27行代码实现将多个Excel表格内容批量汇总合并到一个表格
序言 (https://jq.qq.com/?_wv=1027&k=GmeRhIX0) 老板最近越来越过分了,快下班了发给我几百个表格让我把内容合并到一个表格内去.还好我会Python,分分钟 ...
- Python自动化办公之操作Excel文件
模块导入 import openpyxl 读取Excel文件 打开Excel文件 workbook = openpyxl.load_workbook("test.xlsx") 输出 ...
- 《Python编程快速上手 —让繁琐工作自动化》|百度网盘免费下载|Python自动化办公
Python编程快速上手—让繁琐工作自动化 提取码:u8vj 如今,人们面临的大多数任务都可以通过编写计算机软件来完成. Python 是一种解释型.面向对象.动态数据类型的高级程序设计语言.通过 P ...
- Python自动化办公第三方库xlwt
Python向excel表格写入内容,首先安装第三方库: pip3 install xlwt 代码实例(结合xlrd): #!usr/bin/env python3 #!-*-coding=utf-8 ...
随机推荐
- 机器学习的线性代数(Python 版)
线性代数是数学的分支学科,涉及矢量.矩阵和线性变换.它是机器学习的重要基础,从描述算法操作的符号到代码中算法的实现,都属于该学科的研究范围. 虽然线性代数是机器学习领域不可或缺的一部分,但二者的紧密关 ...
- SpringCloud Alibaba技术栈(二)Nacos服务治理
源码-笔记:Code for Github 第二章 Nacos服务治理 1. 模块设计与实现 ①首先创建maven项目,此项目作为父工程.把src文件夹删掉,修改pom文件,添加依赖版本控制,控制子模 ...
- Codeforce:1300B. Assigning to Classes (math)
解题思路 题目说的意思是,给一个2n个数的数组,注意n为奇数,将这个数组平均分为2份,假设为c1和c2. c1和c2是奇数个元素的数组,比如数组[1,2,3],那么中位数就是2. 那么如何求得中位数差 ...
- 六、docker数据卷
系列导航 一.docker入门(概念) 二.docker的安装和镜像管理 三.docker容器的常用命令 四.容器的网络访问 五.容器端口转发 六.docker数据卷 七.手动制作docker镜像 八 ...
- freeswitch媒体协商的三种配置方案
概述 在企业级VOIP通信中,语音质量是重要的关注点,而语音质量的好坏和媒体编解码有重要的关系. freeswitch作为一款免费开源的软交换平台,支持多种不同的编解码格式,具体详情本文不多描述. 而 ...
- 第七届蓝桥杯大赛个人赛省赛(软件类)B组
3.凑算式 B DEFA + --- + ------- = 10 C GHI (如果显示有问题,可以参见[图1.jpg]) 这个算式中A~I代表1~9 ...
- df -h与df -i的区别
一. df命令详解: linux中df命令的功能是用来检查linux服务器的文件系统的磁盘空间占用情况.可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息 -a 全部文件系统列表 -h ...
- zookeeper 特点、使用场景及安装,配置文件解析
本文为博主原创,未经允许不得转载: 1. Zookeeper 特点: ZooKeeper是用于分布式应用程序的协调服务.它公开了一组简单的API,分布式应用程序可以基于这些API用于同步,节点状态.配 ...
- .NET静态代码织入——肉夹馍(Rougamo)发布2.2
肉夹馍(https://github.com/inversionhourglass/Rougamo)通过静态代码织入方式实现AOP的组件,其主要特点是在编译时完成AOP代码织入,相比动态代理可以减少应 ...
- text, data and bss: Code and Data Size Explained
[来源]