技术标签: pandas python Python 开发语言
Pandas:提供便于分析的数据类型,提供数据分析的各种函数
import pandas as pd
pandas基于numpy实现,常与numpy和matplotlib一同使用
提供的数据类型:Series(一维标签数据),DataFrame(二维-多维)
基于ndarray(数据的结构表达—维度)的扩展数据类型(应用表达—数据与索引之间)
是基于索引的数据结构,对数据的操作基于对索引的操作
Series类型:由一组数据及与之相关的数据索引组成
自动索引,自定义索引
生成series:多种方法
基本操作: a.index a.values
a["a"] a[0]
切片a[1:]
判断索引是否在series列表中"c" in a
两个或多个series之间的对齐操作:对相同的索引进行对齐
series修改a["a"]=9,随时修改,随时应用
import pandas as pd
import numpy as np
# python列表创建
a = pd.Series([1,2,3,4], index=["a","b","c","d"])
print(a)
# 标量值创建,不能省略index
b = pd.Series(2, index=["a","b","c","d"])
print(b)
# 字典类型创建
c = pd.Series({"a":1,"b":2})
print(c)
d = pd.Series({"a":1,"b":2}, index = {"c", "a", "b"})# 索引指定挑取值
print(d)
# ndarray创建
e = pd.Series(np.arange(5))
print(e)
f = pd.Series(np.arange(5), index=np.arange(9,4,-1))# 创建值-索引
print(f)
# 基本操作—索引与值的读取
a = pd.Series([1,2,3,4], ["a","b","c","d"])
print(a.index)
print(a.values)
print(a["b"])# 两种索引可以单独使用,但不可混合使用
print(a[1:3])
"c" in a
a.get("f",100)
a 1 b 2 c 3 d 4 dtype: int64 a 2 b 2 c 2 d 2 dtype: int64 a 1 b 2 dtype: int64 b 2.0 a 1.0 c NaN dtype: float64 0 0 1 1 2 2 3 3 4 4 dtype: int32 9 0 8 1 7 2 6 3 5 4 dtype: int32 Index(['a', 'b', 'c', 'd'], dtype='object') [1 2 3 4] 2 b 2 c 3 dtype: int64
100
共用同一索引的多列表格
index(行索引)—Column(列索引),0开始
创建:
import pandas as pd
import numpy as np
# 从二维ndarray创建
a = pd.DataFrame(np.arange(10).reshape(2,5))
print(a)
# 从字典创建
b = {"one":pd.Series([1,2,3],index=["a","b","c"]),
"two":pd.Series([6,7,8,9], index=["a","b","c","d"])}
c = pd.DataFrame(b)
print(c)
print(pd.DataFrame(b, index=["a","d"],columns=["one"]))
# 从列表类型的字典创建
dl = {"one":[1,2,3],"two":[6,7,8]}
d = pd.DataFrame(dl, index=["a","b","c"])
print(d)
0 1 2 3 4 0 0 1 2 3 4 1 5 6 7 8 9 one two a 1.0 6 b 2.0 7 c 3.0 8 d NaN 9 one a 1.0 d NaN one two a 1 6 b 2 7 c 3 8
改变结构: 增加或重排:重新索引,reindex
删除:drop
fill_value:填充缺失值
索引类型的操作: .append(idx):连接另一个index对象
.diff(idx):计算差集,产生新的index对象
……
import numpy as np
import pandas as pd
dl = {"one":[1,2,3],"two":[6,7,8],"three":[4,5,9]}
d = pd.DataFrame(dl, index=["a","b","c"])
print(d)
print(d.drop("a"))
print(d.drop("one",axis=1))# axis=1代表横向
d = d.reindex(index=["b","c","a"])# 行重排
print(d)
d = d.reindex(columns=["three","one","two"])# 列重排
print(d)
# f = d.columns.insert(4,"新增")
# f = d.reindex(columns+f, fill_value=20)
# print(f)
# 索引的操作
nc = d.columns.delete(2)
print(nc)
ni = d.index.insert(3,"m")
print(ni)
nd = d.reindex(index=ni,columns=nc)
print(nd)
n = pd.Series([1,2,3,4],index=["j","k","l","o"])
print(n)
print(n.drop(["j"]))# .drop函数会产生新的series,而不改变原来的series
print(n)
one two three a 1 6 4 b 2 7 5 c 3 8 9 one two three b 2 7 5 c 3 8 9 two three a 6 4 b 7 5 c 8 9 one two three b 2 7 5 c 3 8 9 a 1 6 4 three one two b 5 2 7 c 9 3 8 a 4 1 6 Index(['three', 'one'], dtype='object') Index(['b', 'c', 'a', 'm'], dtype='object') three one b 5.0 2.0 c 9.0 3.0 a 4.0 1.0 m NaN NaN j 1 k 2 l 3 o 4 dtype: int64 k 2 l 3 o 4 dtype: int64 j 1 k 2 l 3 o 4 dtype: int64
广播运算:不同维度,不同尺寸就补齐(NaN)后运算,值为NaN
四则运算:符号运算,参数运算,两种方式
series与DataFrame之间的运算:series默认在axis=1参与运算
比较运算:同维度运算,需要尺寸一致;不同维度,默认在一轴
import pandas as pd
import numpy as np
a = pd.DataFrame(np.arange(12).reshape(3,4))
print(a)
b = pd.DataFrame(np.arange(20).reshape(4,5))
print(b)
print(a+b)# 出现补齐运算
# 四则运算使用参数进行运算,好处是可以增加参数
print(a.add(b,fill_value=10))# 将缺失值补为某个确定的值
c = pd.Series(np.arange(4))
print(c)
print(b-c)# series默认在axis=1参与运算
# 比较运算
# print(a>b) # 报错
print(a>c)
0 1 2 3 0 0 1 2 3 1 4 5 6 7 2 8 9 10 11 0 1 2 3 4 0 0 1 2 3 4 1 5 6 7 8 9 2 10 11 12 13 14 3 15 16 17 18 19 0 1 2 3 4 0 0.0 2.0 4.0 6.0 NaN 1 9.0 11.0 13.0 15.0 NaN 2 18.0 20.0 22.0 24.0 NaN 3 NaN NaN NaN NaN NaN 0 1 2 3 4 0 0.0 2.0 4.0 6.0 14.0 1 9.0 11.0 13.0 15.0 19.0 2 18.0 20.0 22.0 24.0 24.0 3 25.0 26.0 27.0 28.0 29.0 0 0 1 1 2 2 3 3 dtype: int32 0 1 2 3 4 0 0.0 0.0 0.0 0.0 NaN 1 5.0 5.0 5.0 5.0 NaN 2 10.0 10.0 10.0 10.0 NaN 3 15.0 15.0 15.0 15.0 NaN 0 1 2 3 0 False False False False 1 True True True True 2 True True True True
指定轴上进行索引排序.sort_index():默认升序,默认是0轴操作,也就是纵向,指定1,横向操作
指定轴上根据数值进行排序.sort_values():默认升序,默认是0轴操作
import pandas as pd
import numpy as np
# 索引排序
a = pd.DataFrame(np.arange(12).reshape(3,4), index=["a","b","c"])
print(a)
b = a.sort_index(ascending=False)# 默认在0轴操作
print(b)
c = a.sort_index(axis=1, ascending=False)
print(c)
# 值排序
d = a.sort_values(2, ascending=False)# 根据column=2这一列进行排序
print(d)
e = a.sort_values("a", axis=1, ascending=False)# 根据index="a"这一行进行排序
print(e)
0 1 2 3 a 0 1 2 3 b 4 5 6 7 c 8 9 10 11 0 1 2 3 c 8 9 10 11 b 4 5 6 7 a 0 1 2 3 3 2 1 0 a 3 2 1 0 b 7 6 5 4 c 11 10 9 8 0 1 2 3 c 8 9 10 11 b 4 5 6 7 a 0 1 2 3 3 2 1 0 a 3 2 1 0 b 7 6 5 4 c 11 10 9 8
一些函数:.sum()......
.decribe():包含多种信息
import pandas as pd
import numpy as np
# series
a = pd.Series(np.arange(3), index=["a","b","c"])
print(a)
print(a.describe())# 是包含多种计算的series类型,可以根据索引获得其中的值
print(a.describe()["mean"])
# dataframe类型
b = pd.DataFrame(np.arange(12).reshape(3,4), index=["a","b","c"])
print(b.describe())
print(b.describe()[2])
a 0 b 1 c 2 dtype: int32 count 3.0 mean 1.0 std 1.0 min 0.0 25% 0.5 50% 1.0 75% 1.5 max 2.0 dtype: float64 1.0 0 1 2 3 count 3.0 3.0 3.0 3.0 mean 4.0 5.0 6.0 7.0 std 4.0 4.0 4.0 4.0 min 0.0 1.0 2.0 3.0 25% 2.0 3.0 4.0 5.0 50% 4.0 5.0 6.0 7.0 75% 6.0 7.0 8.0 9.0 max 8.0 9.0 10.0 11.0 count 3.0 mean 6.0 std 4.0 min 2.0 25% 4.0 50% 6.0 75% 8.0 max 10.0 Name: 2, dtype: float64
前n个元素累计求和,运算
窗口计算:滚动计算
import numpy as np
import pandas as pd
b = pd.DataFrame(np.arange(12).reshape(3,4), index=["a","b","c"])
print(b)
print(b.cumsum())# 默认0轴
print(b.cummin())
print(b.rolling(2).sum())# 凑不够相邻元素的就NaN,
0 1 2 3 a 0 1 2 3 b 4 5 6 7 c 8 9 10 11 0 1 2 3 a 0 1 2 3 b 4 6 8 10 c 12 15 18 21 0 1 2 3 a 0 1 2 3 b 0 1 2 3 c 0 1 2 3 0 1 2 3 a NaN NaN NaN NaN b 4.0 6.0 8.0 10.0 c 12.0 14.0 16.0 18.0
协方差>0,正相关:.cov(),协方差矩阵
Pearson相关系数:.corr(),相关系矩阵
文章浏览阅读331次。第一部分:准备工作1 安装虚拟机2 安装centos73 安装JDK以上三步是准备工作,至此已经完成一台已安装JDK的主机第二部分:准备3台虚拟机以下所有工作最好都在root权限下操作1 克隆上面已经有一台虚拟机了,现在对master进行克隆,克隆出另外2台子机;1.1 进行克隆21.2 下一步1.3 下一步1.4 下一步1.5 根据子机需要,命名和安装路径1.6 ..._创建一个hadoop项目
文章浏览阅读1.7k次。心脏滴血漏洞HeartBleed CVE-2014-0160 是由heartbeat功能引入的,本文从深入码层面的分析该漏洞产生的原因_heartbleed代码分析
文章浏览阅读1.4k次。前言ofd是国家文档标准,其对标的文档格式是pdf。ofd文档是容器格式文件,ofd其实就是压缩包。将ofd文件后缀改为.zip,解压后可看到文件包含的内容。ofd文件分析工具下载:点我下载。ofd文件解压后,可以看到如下内容: 对于xml文件,可以用文本工具查看。但是对于印章文件(Seal.esl)、签名文件(SignedValue.dat)就无法查看其内容了。本人开发一款ofd内容查看器,..._signedvalue.dat
文章浏览阅读1.8w次,点赞29次,收藏313次。整体系统设计本设计主要是对ADC和DAC的使用,主要实现功能流程为:首先通过串口向FPGA发送控制信号,控制DAC芯片tlv5618进行DA装换,转换的数据存在ROM中,转换开始时读取ROM中数据进行读取转换。其次用按键控制adc128s052进行模数转换100次,模数转换数据存储到FIFO中,再从FIFO中读取数据通过串口输出显示在pc上。其整体系统框图如下:图1:FPGA数据采集系统框图从图中可以看出,该系统主要包括9个模块:串口接收模块、按键消抖模块、按键控制模块、ROM模块、D.._基于fpga的信息采集
文章浏览阅读2.5w次。1.背景错误信息:-- [http-nio-9904-exec-5] o.s.c.n.z.filters.post.SendErrorFilter : Error during filteringcom.netflix.zuul.exception.ZuulException: Forwarding error at org.springframework.cloud..._com.netflix.zuul.exception.zuulexception
文章浏览阅读358次。1.介绍图的相关概念 图是由顶点的有穷非空集和一个描述顶点之间关系-边(或者弧)的集合组成。通常,图中的数据元素被称为顶点,顶点间的关系用边表示,图通常用字母G表示,图的顶点通常用字母V表示,所以图可以定义为: G=(V,E)其中,V(G)是图中顶点的有穷非空集合,E(G)是V(G)中顶点的边的有穷集合1.1 无向图:图中任意两个顶点构成的边是没有方向的1.2 有向图:图中..._给定一个邻接矩阵未必能够造出一个图
文章浏览阅读321次。(十二)、WDS服务器安装通过前面的测试我们会发现,每次安装的时候需要加域光盘映像,这是一个比较麻烦的事情,试想一个上万个的公司,你天天带着一个光盘与光驱去给别人装系统,这将是一个多么痛苦的事情啊,有什么方法可以解决这个问题了?答案是肯定的,下面我们就来简单说一下。WDS服务器,它是Windows自带的一个免费的基于系统本身角色的一个功能,它主要提供一种简单、安全的通过网络快速、远程将Window..._doc server2012上通过wds+mdt无人值守部署win11系统.doc
文章浏览阅读219次。python–xlrd/xlwt/xlutilsxlrd只能读取,不能改,支持 xlsx和xls 格式xlwt只能改,不能读xlwt只能保存为.xls格式xlutils能将xlrd.Book转为xlwt.Workbook,从而得以在现有xls的基础上修改数据,并创建一个新的xls,实现修改xlrd打开文件import xlrdexcel=xlrd.open_workbook('E:/test.xlsx') 返回值为xlrd.book.Book对象,不能修改获取sheett_xlutils模块可以读xlsx吗
文章浏览阅读8.2w次,点赞267次,收藏656次。运行Selenium出现'WebDriver' object has no attribute 'find_element_by_id'或AttributeError: 'WebDriver' object has no attribute 'find_element_by_xpath'等定位元素代码错误,是因为selenium更新到了新的版本,以前的一些语法经过改动。..............._unresolved attribute reference 'find_element_by_id' for class 'webdriver
文章浏览阅读198次。一:模态窗口//父页面JSwindow.showModalDialog(ifrmehref, window, 'dialogWidth:550px;dialogHeight:150px;help:no;resizable:no;status:no');//子页面获取父页面DOM对象//window.showModalDialog的DOM对象var v=parentWin..._jquery获取父window下的dom对象
文章浏览阅读1.7w次,点赞15次,收藏129次。算法(algorithm)是解决一系列问题的清晰指令,也就是,能对一定规范的输入,在有限的时间内获得所要求的输出。 简单来说,算法就是解决一个问题的具体方法和步骤。算法是程序的灵 魂。二、算法的特征1.可行性 算法中执行的任何计算步骤都可以分解为基本可执行的操作步,即每个计算步都可以在有限时间里完成(也称之为有效性) 算法的每一步都要有确切的意义,不能有二义性。例如“增加x的值”,并没有说增加多少,计算机就无法执行明确的运算。 _算法
文章浏览阅读1.5k次,点赞18次,收藏26次。网络安全的标准和规范是网络安全领域的重要组成部分。它们为网络安全提供了技术依据,规定了网络安全的技术要求和操作方式,帮助我们构建安全的网络环境。下面,我们将详细介绍一些主要的网络安全标准和规范,以及它们在实际操作中的应用。_网络安全标准规范