pandas 提取某几列_【科学计算工具二】初识Pandas

9693b9a801b25f70a0e3af1416ef3585.png

和Numpy最大的不同,Pandas的数据有对应的index。

acf80971ee63b07a6afae92044add9a6.png

一、Series数组

Series 是带有标签的一维数组,可以保存任何数据类型(整数,字符串,浮点数,Python对象等),轴标签统称为索引

  • 创建Series数组

fef54b4c3466fac31fd1ed42612a04fa.png
# 创建 Series 数据类型有三种方法
#1. 从列表创建 Series
arr = [0, 1, 2, 3, 4]
s1 = pd.Series(arr) # 如果不指定索引,则默认从 0 开始
print(s1)输出结果:
0    0
1    1
2    2
3    3
4    4
dtype: int64————————————————————————————————————————————————
#2. 从加入索引创建 Series
index = ['a' , 'b' , 'c' , 'd' , 'e']
n=[1,2,3,4,5]
s2 = pd.Series(n, index=index)
print(s2)输出结果:
a    1
b    2
c    3
d    4
e    5
dtype: int64——————————————————————————————————————————————————
#3.从字典创建 Series
d={'a':1, 'b':2, 'c':3, 'd':4, 'e':5}
s3=pd.Series(d)
print(s3)输出结果:
a    1
b    2
c    3
d    4
e    5
dtype: int64
  • 查看Series的数据,数据类型 values,index,dtype

3077183ea73f74146fe422066ddce35a.png
  • 查看Series的描述性信息 describe()

c638be40981ebee41ecb8a2b79c7dbdc.png
  • 索引操作
index = ['a' , 'b' , 'c' , 'd' , 'e']
n=[1,2,3,4,5]
s2 = pd.Series(n, index=index)输出:
a    1
b    2
c    3
d    4
e    5
dtype: int64——————————————————————————————————————————————————
# 1、位置下标,类似序列
print(s[0])
print(s[3]输出:
1
4——————————————————————————————————————————————————
# 2、标签索引,方法类似下标索引,用[]表示,内写上index,注意index是字符串。
print(s['a'])
print(s[['b','e']])  #如果需要选择多个标签的值,用[[]]来表示(相当于[]中包含一个列表)输出结果:
1b    2
e    5——————————————————————————————————————————————————
# 3、切片索引
print(s[1:3])
print(s['a':'c'])输出结果:
b    2
c    3
dtype: int64a    1
b    2
c    3
dtype: int64——————————————————————————————————————————————————
#4、布尔型索引
index = ['a' , 'b' , 'c' , 'd' , 'e']
n=[20,2,13,None,7]
s = pd.Series(n, index=index)
print(s)输出结果:
a    20.0
b     2.0
c    13.0
d     NaN
e     7.0
dtype: float64----------------------
bls = s>10
print(bls)
print(s[s>10])
# 数组做判断之后,返回的是一个由布尔值组成的新的数组
# 以判断条件作为索引,只输出True部分数值输出结果:
a     True
b    False
c     True
d    False
e    False
dtype: boola    20.0
c    13.0
dtype: float64----------------------
bls = s.notnull()
print(bls)
print(s[bls])
# .isnull() / .notnull() 判断是否为空值,返回的也是一个由布尔值组成的新的数组(None代表空值,NaN代表有问题的数值,两个都会识别为空值)输出结果:
a     True
b     True
c     True
d    False
e     True
dtype: boola    20.0
b     2.0
c    13.0
e     7.0
dtype: float64
  • Series的基本操作

(1)# 数据查看 .head() / .tail() 查看前5行数据,和后5行数据

0e7504f03582e4060bef26f5b8fec183.png

二、Dataframe数组

"二维数组"Dataframe:是一个表格型的数据结构,包含一组有序的列,其列的值类型可以是数值、字符串、布尔值等。

  • 创建DataFrame数组
# Dataframe 数据结构
# Dataframe是一个表格型的数据结构,“带有标签的二维数组”。
# Dataframe带有index(行标签)和columns(列标签)#导入pandas包
import pandas as pd#第1步:定义一个字典,映射列名与对应列的值
salesDict={'购药时间':['2018-01-01 星期五','2018-01-02 星期六','2018-01-06 星期三'],'社保卡号':['001616528','001616528','0012602828'],'商品编码':[236701,236701,236701],'商品名称':['强力VC银翘片','清热解毒口服液','感康'],'销售数量':[6,1,2],'应收金额':[82.8,28,16.8],'实收金额':[69,24.64,15]
}#导入有序字典
from collections import OrderedDict
#定义一个有序字典
salesOrderDict=OrderedDict(salesDict)#定义数据框:传入字典,列名
salesDf = pd.DataFrame(salesOrderDict)
print(salesDf)

结果输出:

5b73e682ddc142eba5aab9d69a84aa10.png
  • 查看行,列标签
print(salesDf.index)   #查看DataFrame的行标签
print(salesDf.columns)   #查看DataFrame的列标签输出结果:
RangeIndex(start=0, stop=3, step=1)
Index(['购药时间', '社保卡号', '商品编码', '商品名称', '销售数量', '应收金额', '实收金额'], dtype='object')
  • 查看每一列数据的类型

6688542079995b10717d1083ade10c0b.png
  • 查看描述性信息

a11b3da7dd05d44bd1ca8b7fbce8c989.png
  • 数据查询
'''
loc属性用于根据索引index获取
''

1) 查询某一行的元素

8e387d95c700874d54ca12fc926c6327.png

2)查询某行特定列的元素

6218e78e16516bca6429dd6e7375b336.png
'''
iloc属性用于根据位置获取值,索引值从0开始
'''

1)查询某一行的数据

320d7bf12852e6b235b0069f9c5d4292.png

2)查询某行特定列的元素

aaf9b1de9f4813ecba763d9e2346b9b4.png

【loc和iloc的区别】

从以上的案列中有点难理解这两种取值的函数有什么不同,下面换个例子详细说明

# loc 和 iloc 的区别
#1. 利用loc、iloc提取行数据import numpy as np
import pandas as pd
#创建一个Dataframe
data=pd.DataFrame(np.arange(16).reshape(4,4),index=list('abcd'),columns=list('ABCD'))In[1]: data
Out[1]: A   B   C   D
a   0    1    2   3
b   4    5    6   7
c   8    9   10  11
d  12   13   14  15#取索引为'a'的行
In[2]: data.loc['a']   # loc根据index值获取
Out[2]:
A    0
B    1
C    2
D    3In[3]: data.iloc[0]   #iloc根据下位置下标获取
Out[3]:
A    0
B    1
C    2
D    3
#取第一行数据,索引为'a'的行就是第一行,所以结果相同
# 2. 利用loc、iloc提取列数据In[4]:data.loc[:,['A']]    #取'A'列所有行,多取几列格式为 data.loc[:,['A','B']]
Out[4]: A
a   0
b   4
c   8
d  12In[5]:data.iloc[:,[0]]    #取第0列所有行,多取几列格式为 data.iloc[:,[0,1]]
Out[5]: A
a   0
b   4
c   8
d  12
# 3.利用loc、iloc提取指定行、指定列数据In[6]:data.loc[['a','b'],['A','B']]   #提取index为'a','b',列名为'A','B'中的数据
Out[6]: A  B
a  0  1
b  4  5In[7]:data.iloc[[0,1],[0,1]]       #提取第0、1行,第0、1列中的数据
Out[7]: A  B
a  0  1
b  4  5

总结:涉及到具体行或列的名字,用loc,只看位置,用iloc

'''
通过切片功能获取元素(这个方法也很常用)
'''
  • 指定列名获取

c0b13c6098859a305aba6129c778d9ed.png
  • 切片索引获取某个范围内的信息

9e47de41314b3eee4a7ea7d7030808af.png
'''
复杂数据框查询数据,通过条件判断筛选
'''

7ab1ea9521122d90bfbd07ec07b7c4c1.png
  • 新增列

d1f939faec3eb2edef6ebae77c65733d.png
  • 删除行 / 列 del / drop()
# del 语句删除 ——删除列

a09e6bfec5a29b95fc24d77b7f5ca94d.png
# drop() #默认删除行,inplace=False → 删除后生成新的数据,不改变原数据

3b412771b9b291363a6bf5803ec69e6c.png
# drop()改变参数axis = 1 ,也可以删除列,inplace=True,原数据会被改变

a803d2f94f6a7129e7a02ef1702fc9b1.png
  • 排序
# 排序1 - 按值排序 .sort_values,参数 ascending = True →升序;反之,降序
同样适用于Series

d33174897de105d0c9a2ce6eeb4bcb9b.png
# 排序2 - 索引排序 .sort_index
# 按照index排序
# 默认 ascending=True (升序), inplace=False(不修改原数据,返回新的数据)

7ba5faf4575d5527effa9aa180d14334.png
  • 读取外部文件,很多时候需要导入外部的excel,csv,图片等格式的文件进行数据处理

关于这一点最重要的是主要外部文件和本身python工程文件的相对位置,位置不对,python就不能正确找到。

#读取Ecxcel数据
fileNameStr='./朝阳医院2018年销售数据.xlsx'
xls = pd.ExcelFile(fileNameStr)
salesDf = xls.parse('Sheet1')
  • 数值计算和统计方法
  1. 求均值 .mean()
按照列进行计算只统计数字列
可以通过索引单独统计一列

26e79fb6c75ec6028d8601ac667da2b3.png

2. 统计数量 .count() →统计非Na值的数量

按照列进行计算
可以通过索引单独统计一列

3a730948b78fd17de439701f4332cdfd.png

3. 其他同理

  • 求和: df.sum()
  • 求最大最小值: df.min() / df.max()
  • 求中位数: df.median()
  • 求标准差,方差: df.std() / df.var()
  • 去重 .duplicated()
#  Series 和 Dataframe都可以用这个函数#1、Series
#导包
import pandas as pds = pd.Series([1,1,1,1,2,2,2,3,4,5,5,5,5])
print(s.duplicated())
print(s[s.duplicated() == False])
# 判断是否重复
# 通过布尔判断,得到不重复的值输出结果:
0     False
1      True
2      True
3      True
4     False
5      True
6      True
7     False
8     False
9     False
10     True
11     True
12     True
dtype: bool0    1
4    2
7    3
8    4
9    5
dtype: int64—————————————————————————————————————————————————
s = pd.Series([1,1,1,1,2,2,2,3,4,5,5,5,5])
s_re = s.drop_duplicates()
print(s)
print(s_re)
# drop.duplicates移除重复
# inplace参数:是否替换原值,默认False,不替换。输出结果:
0     1
1     1
2     1
3     1
4     2
5     2
6     2
7     3
8     4
9     5
10    5
11    5
12    5
dtype: int640    1
4    2
7    3
8    4
9    5
dtype: int64——————————————————————————————————————————————————
df = pd.DataFrame({'key1':['a','a',3,4,5],'key2':['a','a','b','b','c']})
print(df.duplicated())
print(df['key2'].duplicated())
# Dataframe中使用duplicated输出结果:key1 key2
0    a    a
1    a    a
2    3    b
3    4    b
4    5    c
0    False
1     True
2    False
3    False
4    False
dtype: bool
0    False
1     True
2    False
3     True
4    False
Name: key2, dtype: bool
#然后再利用布尔型索引方式去除重复值即可。

数据分析中pandas可能用到的知识点汇总至此,在学习的过程中会不断补充... ...

acae05bd4a784f122c7351535116c69d.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/430124.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

maven+springmvc下载excle文件——ie8可用

mavenspringmvc下载excle文件——ie8可用转载于:https://www.cnblogs.com/zhujiabin/p/5866535.html

spring security:自定义认证成功处理器

使用spring认证登录,登录之后,一般还需要进行其他处理,例如:保存登录时间、登录ip到数据库,缓存用户信息到redis数据库等等,这些操作可以通过自定义一个登录成功处理器来处理。 自定义认证成功处理器 只需…

开发物体识别桌、_科研人员开发突破性的技术,允许盲人识别形状和物体

一项令人难以置信的新技术正在让失明人士有能力识别形状和物体,而这些形状和物体都是在他们的大脑上“画出来”的。一篇描述该技术的研究论文刚刚发表在《细胞》杂志上,正如ScienceNews报道的那样,这可能是向盲人提供一种视觉上与周围世界互动…

【第一周】PSP

日期C类别C内容S开始时间E结束时间I间隔(单位:分钟)T净时间(单位:分钟)9月2日编程词频统计7:359:35101109月3日读书构建之法8:009:00555 编程词频统计13:0014:000609月4日读书构建之法8:009:00060 编程四则运算13:0015:0010110总时间:395分钟,约等于6.58…

spring webflow getting start

概述 很多时候,我们写的流程都嵌在一大堆代码中,没有办法直观的管理。而spring webflow可以将流程抽出来,放到一个单独的xml文件中,这样流程就不会埋没在代码里了。 今天要做一个很简单的流程: 商品发布流程 Created…

pythonvim编辑教程_Pycharm学习教程(6) Pycharm作为Vim编辑器使用

Pycharm作为Vim编辑器使用,具体内容如下1、主题如果你是Vim的粉丝,并且不打算使用其他类型的编辑器,那么这篇教程将会比较适合你。这里将会详细介绍如何在Pycharm IdeaVim插件的帮助下下载、安装、使用Vim。至于有关Python编程以及Vim的用法&…

什么是cname a记录

https://support.dnsimple.com/articles/cname-record/ CNAME就是别名记录,就是负责跳转,比如你给某个地址设置了一个cname,那当访问那个cname的时候,就会跳转到那个某个地址 a记录就是一个ip地址所对应的地址。可以理解为a记录就是一个连接器…

Spring上传时报Invalid CSRF Token错误解决方案

概述 使用spring security之后&#xff0c;默认上传文件会报这个错&#xff0c;解决方案有下面两个&#xff1a; 解决方案一&#xff1a; 将 MultipartFilter 放在 springSecurityFilterChain 前面 修改web.xml文件&#xff1a; <!-- 文件上传过滤器&#xff0c;过滤上传…

windows 修改nginx端口号_分享Nginx搭建图片服务器简单实现

第一步&#xff1a;安装vsftpd提供ftp服务https://www.cnblogs.com/lyq159/p/12070791.html第二步&#xff1a;安装Nginx提供http服务1.安装准备&#xff1a;安装Nginx环境a) gcc      安装nginx需要先将官网下载的源码进行编译&#xff0c;编译依赖gcc环境&#xff0c;如…

C#学习笔记-数据的传递(公共变量)以及Dictionary

看的代码越多&#xff0c;写的代码越多&#xff0c;就越是享受这些字符&#xff0c;终于渐渐懂得了那种传闻中的成就感&#xff0c;特别是自己从看不懂然后一步一步学&#xff0c;一个代码一个代码地敲&#xff0c;最后哪怕只是完成了一个小功能&#xff0c;也都是特别自豪的&a…

spring webflow : 上传单个文件实例

准备 如果你项目中使用了spring security的话&#xff0c;参考上一篇文章&#xff0c;使用上篇的第二种方法&#xff0c;并去掉MultipartFilter&#xff08;如果有配置的话&#xff09;&#xff0c;否则得不到文件流程中的变量&#xff08;如用var标签定义的变量&#xff09;&…

pythonopencv图像形态_Python+OpenCV图像处理之其他形态学操作

顶帽(Top Hat)&#xff1a;原图像与开操作之间的差值图像&#xff0c;突出原图像中比周围亮的区域黑帽(Black Hat)&#xff1a;闭操作图像与原图像的差值图像, 突出原图像中比周围暗的区域形态学梯度(Gradient)&#xff1a;基础梯度&#xff1a;基础梯度是用膨胀后的图像减去腐…

Spring webflow:上传多个文件

上篇讲了上传单个文件&#xff0c;在上篇的基础上稍作修改就可以上传多个文件了。 实现 首先&#xff0c;实体类要修改&#xff0c;使用List来存储多个文件&#xff1a; Component public class GoodsEntity implements Serializable{private static final long serialVersi…

csv格式清洗与转换python_实例详解Python中 CSV格式清洗与转换

Python中 CSV格式清洗与转换的实例代码题目&#xff1a;CSV格式清洗与转换描述附件是一个CSV格式文件&#xff0c;提取数据进行如下格式转换&#xff1a;‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪…

斐波那契数列通项公式

1.对于斐波那契数列来说&#xff0c;存在通项公式&#xff0c;f[n] 2、Hdu练习题1568&#xff1b; 大意求斐波那契数列中的某一项&#xff0c;n很大&#xff0c;只能在O(1)时间求出&#xff0c;并且只要前四位 当n很大时最后一项几乎为零转载于:https://www.cnblogs.com/dlut-l…

Spring MVC 生成文件类型响应

图片控制器代码如下&#xff1a; Controller RequestMapping("/") public class WebController {RequestMapping(methodRequestMethod.GET,path"/img/{imgNo}")public void getImg(HttpServletResponse response,int index) throws IOException{ //读取图…

服务器驱动精灵_驱动精灵真的可以帮你安装驱动吗?别再无脑装驱动了

之前和大家讲过一期安装官方纯净系统的方法&#xff0c;戳我查看然后很多人就说重装之后显卡驱动掉了打游戏卡的跟PPT一样。于是很多人在重装系统或是进行了重大硬件更新后&#xff0c;一般会采用第三方驱动管理软件来进行硬件的更新&#xff0c;实际上这是一种自杀式行为&…

(原创)网吧桌面背景添加文字,转载注明出处!

很简单的小工具&#xff0c;可用于公告等。 下载地址&#xff1a;http://pan.baidu.com/s/1i5dPQTJ 密码&#xff1a;sfw7 博客地址&#xff1a;http://www.cnblogs.com/flybox/ 如有必要&#xff0c;后续可添加功能&#xff1a;远端配置文字内容等&#xff0c;方便多网吧统一…

MongoDB 操作范例

查询 查询嵌套文档 比如&#xff0c;有商品文档goods&#xff0c;结构如下&#xff1a; {"name":"牙刷","class":{"classNo": 111,"name":"日用品"} } 现在要查找所有 classNo111的商品&#xff0c;怎么查&am…

前端vue适配不同的分辨率_前端面试时,被问到项目中的难点有哪些?

在每个前端求职者的面试过程中&#xff0c;一定都有过被面试官问到项目中的难点&#xff0c;而答不上来的情况。为了让大家在前端面试前准备得更加充足&#xff0c;小编准备了一些易被忽视且难度较高的前端面试题&#xff0c;希望可以帮助大家更加顺利完成求职&#xff0c;找到…