Pandas的结构和应用

Pandas处理以下三个数据结构 -

  • 系列(Series)----一维ndarray

            特点:带有标签,可以使用标签作为索引,大小不能改变,内部数据可以改变。

              属性:与NumPy类似,多了一个轴标签axis lables

  • 数据帧(DataFrame)---二维ndarray                  特点:带标签,可以同行列标签索引,尺度可变,数据可变
  • 面板(Panel)                                                    特点:面板是具有异构数据的三维数据结构。在图形表示中很难表示面板

这些数据结构构建在Numpy数组之上,这意味着它们很快。

考虑这些数据结构的最好方法是,较高维数据结构是其较低维数据结构的容器。 例如,DataFrameSeries的容器,PanelDataFrame的容器。

1.对象的创建:数组  字典  标量值或常数

import pandas as pd
import numpy as nps = pd.Series([1,3,5,np.nan,6,8])print(s)

输出:

0    1.0
1    3.0
2    5.0
3    NaN
4    6.0
5    8.0
dtype: float64

通过传递numpy数组,使用datetime索引和标记列来创建DataFrame

dates = pd.date_range('20180701', periods=7)
print(dates)print("--"*16)
df = pd.DataFrame(np.random.randn(7,4), index=dates, columns=list('ABCD'))
print(df)

输出:

DatetimeIndex(['2018-07-01', '2018-07-02', '2018-07-03', '2018-07-04','2018-07-05', '2018-07-06', '2018-07-07'],dtype='datetime64[ns]', freq='D')
--------------------------------A         B         C         D
2018-07-01 -0.500163  0.032670 -1.026652 -0.444624
2018-07-02  0.870395 -1.879662  0.476651  0.546444
2018-07-03 -0.182999 -0.497964  0.840211  0.256168
2018-07-04  1.130527 -0.664251 -0.226294  1.660457
2018-07-05 -1.304568  0.204915  0.366062  1.905667
2018-07-06  0.605275  0.356298 -0.561465 -0.000841
2018-07-07  0.226876  0.998272  0.592386  0.306725

2.查看数据

x.head()可以查看顶部数据        x.tail()可以输入参数,查看指定个数的底部数据

 

df1 = pd.DataFrame([22,24,54,65,76,88,98],  columns=list('A'))
print(df1.head())
print("--------------" * 10)
print(df1.tail(3))

 

输出:

  

    A
0  22
1  24
2  54
3  65
4  76
------------------------------------------------------------------------------------A
4  76
5  88
6  98

3.x.describe()描述显示数据的快速统计摘要,参考以下示例代码

dates = pd.date_range('20180701', periods=7)
df = pd.DataFrame(np.random.randn(7,4), index=dates, columns=list('ABCD'))
print(df.describe())

输出:

           A         B         C         D
count  7.000000  7.000000  7.000000  7.000000
mean  -0.051137 -0.290501 -0.308145 -0.287636
std    0.720711  1.084754  0.946105  0.615045
min   -0.766295 -1.789795 -1.962022 -1.262667
25%   -0.658085 -1.213707 -0.778745 -0.468529
50%   -0.286046  0.302139  0.020762 -0.379909
75%    0.496656  0.476699  0.207962 -0.100779
max    1.017243  0.928164  0.925811  0.767738

4.排序

(1)标签索引的排序----sort_index(axis=1,ascending=False)

  其中ascending默认为True,升序排序

(2)元素单列排序:----sort_values(by=‘B’)

  默认会按所在列进行升序排序

5.选择系列元素 , 通过【】使用

值得注意的是:利用dataframe时,做切片用的标签边界可以取到,而作为下标的右边界是取不到的。

(1)按标签选择:loc /at     按下标选择:iloc/iat

 

print(df.loc[dates[0]])

 

输出:

A    1.320921
B    0.522823
C    0.340569
D   -1.911398
Name: 2017-01-01 00:00:00, dtype: float64

(2)通过标签选择多轴,其中:处也可以写行标签

print(df.loc[:,['B','D']])

输出:

                   B         D
2017-01-01  0.522823 -1.911398
2017-01-02 -0.354351 -1.719314
2017-01-03 -0.166968 -0.623292
2017-01-04 -1.198105  0.824853
2017-01-05 -0.829653  0.310548
2017-01-06 -0.964786  0.051597

 

 

(3)布尔索引

也可以根据isin()的参数条件进行过滤,使用参考教程。

print(df[df.A>0])

输出:

                   A         B         C         D
2017-01-01  1.320921  0.522823  0.340569 -1.911398
2017-01-03  0.991224 -0.166968  0.840899 -0.623292
2017-01-04  0.240294 -1.198105  0.021427  0.824853
2017-01-06  0.683117 -0.964786 -0.159696  0.051597

5.(1)列的选择  df['列名']

  (2)列的添加:df['列名']=df.Serices[数组]

  (3)列的删除:del  df['列名']

6.(1)行的选择  df[]切片、loc标签索引

  (2)行的添加:df.append(df系列)

  (3)行的删除:df.drop(索引)

7.迭代

for col in df:print (col)

输出:

A
B
C
D

表示:如果只是迭代df对象,而非他的迭代器迭代,则只会输出dataframe的列名。

(1)所以迭代列应该为:

for key,value in df.iteritems():print (key,value)

(2)迭代行为:

for row_index,row in df.iterrows():print (row_index,row)

(3)itertuples()方法将为DataFrame中的每一行返回一个产生一个命名元组的迭代器。元组的第一个元素将是行的相应索引值,而剩余的值是行值。

 

注意 - 不要尝试在迭代时修改任何对象。迭代是用于读取,迭代器返回原始对象(视图)的副本,因此更改将不会反映在原始对象上。

7.分组和聚合

 

GroupBy()/ Agg()

(1)任何分组(groupby)操作都涉及原始对象的以下操作之一。它们是 -

  • 分割对象
  • 应用一个函数
  • 结合的结果

在许多情况下,我们将数据分成多个集合,并在每个子集上应用一些函数。在应用函数中,可以执行以下操作 -

  • 聚合 - 计算汇总统计
  • 转换 - 执行一些特定于组的操作
  • 过滤 - 在某些情况下丢弃数据

 

 

df.groupby('列名').groups

grouped = df.groupby('列名')for name,group in grouped:print (name)print (group)

  get_group()方法,可以选择一个组

(2)聚合函数为每个组返回单个聚合值。当创建了分组(group by)对象,就可以对分组数据执行多个聚合操作。

一个比较常用的是通过聚合或等效的agg方法聚合。

grouped = df.groupby('列名1')
print (grouped['列名2'].agg(np.mean))

(3)转换

分组或列上的转换返回索引大小与被分组的索引相同的对象。因此,转换应该返回与组块大小相同的结果。

print (grouped.transform(score))

(4)过滤

过滤根据定义的标准过滤数据并返回数据的子集。filter()函数用于过滤数据。

filter = df.groupby('Team').filter(lambda x: len(x) >= 3)print (filter)

8.可视化

df = pd.DataFrame(np.random.randn(10,4),index=pd.date_range('2018/12/18',periods=10), columns=list('ABCD'))df.plot()
  • barbarh为条形
  • hist为直方图
  • boxplot为盒型图
  • area为“面积”
  • scatter为散点图
import pandas as pd
from matplotlib import pyplot as plt
import numpy as np
import random
df = pd.DataFrame(np.random.randn(10,4),index=pd.date_range('2018/12/18',periods=10), columns=list('ABCD'))
df.plot()
plt.show()

输出:

df = pd.DataFrame(np.random.rand(10,4),columns=['a','b','c','d'])
df.plot.bar()
plt.show()

输出:

 

其余图形类似上面的方法,各种图形请参考Matplotlib官网,详细介绍会在下一篇博客,请关注留言。

转载于:https://www.cnblogs.com/qianshuixianyu/p/9255556.html

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

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

相关文章

时间即财富:创业者浪费精力的八个错误

导读:本文作者Jeff Miller是美食网页应用Punchfork的创始人,同时也是DuckDuckGo、Ginzametrics、Art.sy、DataMinr以及Forkly的投资人。作者通过对自己创业初期一些错误选择进行盘点,告诉读者在创业初期应该学会选择,因为在创业初…

写给大数据开发初学者的话3

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 如果你已经按照《写给大数据开发初学者的话2》中第三章和第四章的流程认真完整的走了一遍,那么你应该已经具备以下技能和知识…

十五周二次课

18.6 负载均衡集群介绍 主流开源软件LVS、keepalived、haproxy、nginx等其中LVS属于4层(网络OSI 7层模型),nginx属于7层,haproxy既可以认为是4层,也可以当做7层使用keepalived的负载均衡功能其实就是lvslvs这种4层的负…

写给大数据开发初学者的话4

见:http://lxw1234.com/archives/2016/11/795.htm 如果你已经按照《写给大数据开发初学者的话3》中第五章和第六章的流程认真完整的走了一遍,那么你应该已经具备以下技能和知识点: 为什么Spark比MapReduce快。使用SparkSQL代替Hive&#xff…

域名解析服务之DNS查询类型

在实际应用中DNS查询主要分为两种方式查询:1.递归查询;2.迭代查询 一般情况下:为了减少资源的消耗,网络中客户端与所属的本地DNS服务器查询方式通常为递归查询,本地DNS服务器与外部的公共DNS服务器间的查询方式为迭代查…

MFC Ribbon界面设计

Ribbon是类似于office2007样式的界面,它替代了传统的MFC程序里的菜单和工具栏 MFC默认生成的Ribbon功能少,需要我们自己添加一些控件和图片等元素使界面好看 看下面的一个界面,是VC2010示例里的 看到它与默认Ribbon样式的区别: 工…

获取泛型T的ClassT clazz

在我们搭建框架中往往会用到泛型,我们知道泛型的好处是在编译的时候检查类型安全&#xff0c;并且所有的强制转换都是自动和隐式的&#xff0c;代码的重用率高 然而有时候<method>的入参并不能直接强制转换成泛型的类型,比如说下面这段代码&#xff1a; 很明显String 类…

写给大数据开发初学者的话5

见&#xff1a;http://lxw1234.com/archives/2017/01/832.htm 至此&#xff0c;你的大数据平台底层架构已经成型了&#xff0c;其中包括了数据采集、数据存储与计算&#xff08;离线和实时&#xff09;、数据同步、任务调度与监控这几大模块。接下来是时候考虑如何更好的对外提…

3.spring boot Controller获取请求参数的值

2019独角兽企业重金招聘Python工程师标准>>> 1.获取连接中的参数,使用倒的关键词PathVariable RestController public class HelloController {RequestMapping(value "/hello/{id}",method RequestMethod.GET)public String index(PathVariable("i…

登录与注册

代码如下 private void btn_login_Click(object sender, EventArgs e){SqlConnection sqlconnection new SqlConnection();sqlconnection.ConnectionString ConfigurationManager.ConnectionStrings["SQL"].ConnectionString;SqlCommand sqlcommand new SqlComman…

三分钟明白 Activiti工作流 -- java运用

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 一、 什么是工作流 以请假为例&#xff0c;现在大多数公司的请假流程是这样的 员工打电话&#xff08;或网聊&#xff09;向上级提出请…

vue-i18n使用及踩坑记录

使用步骤 1. 安装 npm i vue-i18n 2. vue-cli下使用 //1. 引入 vue-i18n import Vue from vue import VueI18n from vue-i18n Vue.use(VueI18n)//2. 定义messages const messages {en: {text: {hello: hello world}},zh: {text: {hello: 你好、世界}} }//如果messages字段很多…

idea搭建web项目及tomcat部署总结

该文章为引用文章&#xff0c;原地址为&#xff1a;https://www.cnblogs.com/shindo/p/7272646.html 后面有我自己搭建过程中遇到的问题及解决方案&#xff0c;请参考。 一、创建简单web项目 1、创建一个web project File -> new Project ->选择project sdk 为1.6&#x…

Activiti工作流框架学习(一)环境的搭建和数据表的了解

一、什么是工作流 工作流(Workflow)&#xff0c;就是“业务过程的部分或整体在计算机应用环境下的自动化”&#xff0c;它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行&#xff0c;从而实现某个预期的业务目标&#xff0c;或者促使…

基础、语法都不是最重要的,学Python最重要的是什么?编程思路!

论述 一些朋友自学python过程中&#xff0c;发现书也能看懂&#xff0c;书上的玩具代码也能看懂&#xff0c;但为啥自己不能做习题&#xff0c;不能写代码解决问题&#xff0c;自己不能动手写代码&#xff1f; 原因 初学者没有学会计算思维、解决问题的方法、编程思路。编程思路…

Activiti工作流引擎的使用

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 Activiti工作流引擎使用 1.简单介工作流引擎与Activiti 对于工作流引擎的解释请参考百度百科&#xff1a;工作流引擎 1.1 我与工作流引…

Flurry调查报告:图片和视频应用增长速度最快

据外国媒体报道&#xff0c;移动数据分析公司Flurry近期对应用分类的欢迎度进行研究后发现&#xff0c;就用户使用的时间而言&#xff0c;“图片和视频”应用已成为增长最快的移动应用。 Flurry对各种应用分类的800多万移动用户进行了调查&#xff0c;并利用其分析工具跟踪了1…

12-思科防火墙:ASA会话超时

一、实验拓扑&#xff1a;二、实验要求&#xff1a;DCD&#xff1a;死亡检测时间&#xff0c;默认R2 Telnet上去保持时间为1个小时&#xff0c;超时就会被清除掉&#xff0c;这里要求变为4小时&#xff0c;每15s就会发送5个DCD检测包&#xff0c;如没回应就剔除掉&#xff0c;回…

orCAD使用Orcad Capture CIS按Room摆放

http://www.sig007.com/EDAguide/176.html 37 使用Orcad Capture CIS按Room摆放 &#xff08;1&#xff09;打开原理图某一工程页 &#xff08;2&#xff09;按Ctrl键依次选中需要建Room的元件&#xff0c;右击&#xff0c;选择Edit Properties 在Filter by 下拉菜单中选择Cad…

细数25个硅谷最热创业公司 寻找创业灵感

【CSDN编译报道】硅谷堪称高科技产业之乡&#xff0c;每当提起就能联想到影响全球产业的各大著名企业Mircosoft、Google、Adobe、Oracle、Yahoo、SAP、intel等。而硅谷也被誉为创业公司的天堂&#xff0c;多如繁星的初创公司Karma、99Dresses、Getaround、Omada Health、Social…