python入门11:Pandas库,Series类型,DataFrame类型,Pandas数据类型操作,以及Pandas算术运算-程序员宅基地

技术标签: pandas  python  Python  开发语言  

Pands

Pandas:提供便于分析的数据类型,提供数据分析的各种函数
import pandas as pd
pandas基于numpy实现,常与numpy和matplotlib一同使用
提供的数据类型:Series(一维标签数据),DataFrame(二维-多维)
基于ndarray(数据的结构表达—维度)的扩展数据类型(应用表达—数据与索引之间)
是基于索引的数据结构,对数据的操作基于对索引的操作

Series

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

DataFrame类型

共用同一索引的多列表格
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

Pandas库的数据类型操作

改变结构: 增加或重排:重新索引,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

Pandas算术运算

广播运算:不同维度,不同尺寸就补齐(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(),相关系矩阵

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_46080995/article/details/135956674

智能推荐

从零开始搭建Hadoop_创建一个hadoop项目-程序员宅基地

文章浏览阅读331次。第一部分:准备工作1 安装虚拟机2 安装centos73 安装JDK以上三步是准备工作,至此已经完成一台已安装JDK的主机第二部分:准备3台虚拟机以下所有工作最好都在root权限下操作1 克隆上面已经有一台虚拟机了,现在对master进行克隆,克隆出另外2台子机;1.1 进行克隆21.2 下一步1.3 下一步1.4 下一步1.5 根据子机需要,命名和安装路径1.6 ..._创建一个hadoop项目

心脏滴血漏洞HeartBleed CVE-2014-0160深入代码层面的分析_heartbleed代码分析-程序员宅基地

文章浏览阅读1.7k次。心脏滴血漏洞HeartBleed CVE-2014-0160 是由heartbeat功能引入的,本文从深入码层面的分析该漏洞产生的原因_heartbleed代码分析

java读取ofd文档内容_ofd电子文档内容分析工具(分析文档、签章和证书)-程序员宅基地

文章浏览阅读1.4k次。前言ofd是国家文档标准,其对标的文档格式是pdf。ofd文档是容器格式文件,ofd其实就是压缩包。将ofd文件后缀改为.zip,解压后可看到文件包含的内容。ofd文件分析工具下载:点我下载。ofd文件解压后,可以看到如下内容: 对于xml文件,可以用文本工具查看。但是对于印章文件(Seal.esl)、签名文件(SignedValue.dat)就无法查看其内容了。本人开发一款ofd内容查看器,..._signedvalue.dat

基于FPGA的数据采集系统(一)_基于fpga的信息采集-程序员宅基地

文章浏览阅读1.8w次,点赞29次,收藏313次。整体系统设计本设计主要是对ADC和DAC的使用,主要实现功能流程为:首先通过串口向FPGA发送控制信号,控制DAC芯片tlv5618进行DA装换,转换的数据存在ROM中,转换开始时读取ROM中数据进行读取转换。其次用按键控制adc128s052进行模数转换100次,模数转换数据存储到FIFO中,再从FIFO中读取数据通过串口输出显示在pc上。其整体系统框图如下:图1:FPGA数据采集系统框图从图中可以看出,该系统主要包括9个模块:串口接收模块、按键消抖模块、按键控制模块、ROM模块、D.._基于fpga的信息采集

微服务 spring cloud zuul com.netflix.zuul.exception.ZuulException GENERAL-程序员宅基地

文章浏览阅读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 有向图:图中..._给定一个邻接矩阵未必能够造出一个图

随便推点

MDT2012部署系列之11 WDS安装与配置-程序员宅基地

文章浏览阅读321次。(十二)、WDS服务器安装通过前面的测试我们会发现,每次安装的时候需要加域光盘映像,这是一个比较麻烦的事情,试想一个上万个的公司,你天天带着一个光盘与光驱去给别人装系统,这将是一个多么痛苦的事情啊,有什么方法可以解决这个问题了?答案是肯定的,下面我们就来简单说一下。WDS服务器,它是Windows自带的一个免费的基于系统本身角色的一个功能,它主要提供一种简单、安全的通过网络快速、远程将Window..._doc server2012上通过wds+mdt无人值守部署win11系统.doc

python--xlrd/xlwt/xlutils_xlutils模块可以读xlsx吗-程序员宅基地

文章浏览阅读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吗

关于新版本selenium定位元素报错:‘WebDriver‘ object has no attribute ‘find_element_by_id‘等问题_unresolved attribute reference 'find_element_by_id-程序员宅基地

文章浏览阅读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

DOM对象转换成jQuery对象转换与子页面获取父页面DOM对象-程序员宅基地

文章浏览阅读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次。网络安全的标准和规范是网络安全领域的重要组成部分。它们为网络安全提供了技术依据,规定了网络安全的技术要求和操作方式,帮助我们构建安全的网络环境。下面,我们将详细介绍一些主要的网络安全标准和规范,以及它们在实际操作中的应用。_网络安全标准规范