Pandas数据结构

pandas有两个基本的数据结构:Series和DataFrame。

1.1 创建Series数据

需要引入pandas模块:import pandas as pd

需要引入Series和DataFrame: from pandas import Series,DataFrame

Series数据:索引在左,值在右

Series有values和index属性,可返还值数据的数据形式和索引对象

Series具有索引对象,可通过其获取Series的单个或者一组值

Series运算都会保留索引和值之间的链接

Series数组中的索引和值一一对应,类似于Python字典数据,所以也可以通过字典数据来创建Series

Series对象和索引都有name属性,这样我们就可以给Series定义名称,让Series更具可读性

1.2 创建DataFrame数据

DataFrame数据有行索引和列索引,行索引类似于Excel表格中每行的编号(没有指定索引的情况下),列索引类似于Excel表格的列名(通常也可称为字段)

由于字典是无序的,因此可以通过columns指定列索引的排列顺序

当没有指定行索引的情况下,会使用0到N-1(N为数据的长度)作为行索引,这里也可以使用其他数据作为行索引。

通过values属性可以将DataFrame数据转换为二维数组。

下表中提供了部分常用的为创建DataFrame数据可传入的数据类型。

1.3 索引对象

Series的索引和DataFrame的行和列索引都是索引对象,用于负责管理轴标签和元数据。

索引对象是不可以进行修改的,如果修改就会报错

二、pandas索引操作

2.1 重新索引

重新索引并不是给索引重新命名,而是对索引重新排序,如果某个索引值不存在的话,就会引入缺失值(NaN)。

对于DataFrame数据来说,行和列索引都是可以重新索引的。

需要对插入的缺失值进行填充的话,可通过method参数来实现,参数值为ffill或pad时为向前填充,参数值为bfill或backfill时为向后填充。

reindex函数的各参数使用说明

2.2 更换索引

在DataFrame数据中,如果不 希望使用默认行索引的话,可 在创建的时候通过index参数来 设置行索引。有时我们希望将 列数据作为行索引,这时可以 通过set_index方法来实现

与set_index方法相反的方法是reset_index(恢复索引)方法

对DataFrame数据,排序之后其行索引会改变

2.3 索引和选取

注意:如果是利用索引标签切片,其尾端是被包含的。

1、 选取列

注意:选取列不能使用切片,因为切片用于选取行数据

2、选取行

注意:获取单独的几行,通过loc和iloc方法可以实现。loc方法是按行索引标签选取数据;iloc方法是按行索引位置选取数据

3、选取行和列

注意:ix方法同时支持索引标签和索引位置来进行行数据的选取,新版的Python中,ix已被废弃,用ix选取行列的方式可以用如下代码代替

4、布尔选择

筛选出性别为female的数据,这时就需要通过布尔选择来完成。

同样也适用于不等于符号(!=)、负号(-)、和(&)、或(|)。

2.4、操作行和列

1、增加 通过append函数传入字典结构数据即可

为一个不存在的列赋值,即可创建一个新列

2、通过drop方法可以删除指定轴上的信息

3、通过rename函数,可完成由于某些原因导致的标签录入错误的问题

三、pandas数据运算

3.1、算数运算

pandas的数据对象在进行算术运算时,如果有相同索引对则进行算术运算,如果没有则会引入缺失值,这就是数据对齐

1、Series数据算术运算

2、DataFrame数据算术运算

3、DataFrame和Series数据在进行运算时,先通过Series的索引匹配到相应的DataFrame列索引上,然后沿行向下运算(广播)。

3.2、函数应用和映射

map函数,将函数套用在Series的每个元素中;

apply函数,将函数套用到DataFrame的行与列上;

applymap函数,将函数套用到DataFrame的每个元素上

1、 需要把price列的“元”字去掉,这时就需要用到map函数

2、apply函数

注意:lambda为匿名函数,和定义好的函数一样,可以节省代码量

3、applymap函数可作用于每个元素,便于对整个DataFrame数据进行批量处理

3.3、排序

1、通过sort_index函数可对索引进行排序,默认情况为升序

2、通过sort_values方法可对值进行排序

pandas排序函数sort_values: pandas中的sort_values()函数原理类似于SQL中的order by,可以将数据 集依照某个字段中的数据进行排序,该函数即可根据指定列数据也可根据指定 行的数据排序。用法如下: DataFrame.sort_values(by=‘##’,axis=0,ascending=True, inplace=False, na_position=‘last’)

3.4、汇总与统计

在DataFrame数据中,通过sum函数可以对每列进行求和汇总

指定轴方向,通过sum函数可按行汇总

describe方法可对每个数值型列进行统计,经常用于对数据的初步观察时使用

count为总数

mean为算数平均数

std为标准差

min为最小值

25%, 50%和75%是对应的四分位数

max为最大值

3.5、唯一值和值计数

在Series中,通过unique函数可以获取不重复的数组。通过values_counts方法可统计每个值出现的次数。

注意:对于DataFrame的列而言,unique函数和value_counts方法同样适用

四、层次化索引

4.1、层次化索引简介

层次化索引就是轴上有多个级别索引

4.2、重排分级顺序

通过swaplevel方法可以对层次化索引进行重排。

4.3、汇总统计

在对层次化索引的pandas数据进行汇总统计时,可以通过level参数指定在某层次上进行汇总统计

五、 pandas可视化

5.1、线形图

Pandas库中的Series和DataFrame中都会有绘制各类图表的plot方法, 默认情况绘制的是线形图。

import numpy as np

import pandas as pd

from pandas import Series,DataFrame

import matplotlib as mpl

import matplotlib.pyplot as plt # 导入matplotlib库

%matplotlib inline

注意: %matplotlib inline为魔法函数,使用该函数绘制的图片会直接显示在Notebook中。

创建一个Series对象

创 建 DataFrame数据。

5.2、柱状图

柱状图常描绘各类别之间的关系

通过pandas绘制柱状图,只需要在plot函数中加入kind=‘bar’,如果类别较多,可绘制水平柱状图(kind=‘barh’)

设置plot函数的stacked参数,可以绘制堆积柱状图。

说明:plot函数的alpha参数可设置颜色透明度。

5.3、直方图和密度图

直方图用于频率分布,y轴可为数值或 者比率。直方图在统计分析中是经常使 用的,绘制数据的直方图,可以看出其 大概分布规律。

通过hist方法绘制直方图

注意:通过设置grid参数可在图表中添加网格 ;bins参数是将值分为多少段,默认为10。

核密度估计(Kernel Density Estimate,KDE)是对真实密度的 估计,其过程是将数据的分布近似为一组核(如正态分布)。

通 过plot函数的kind=‘kde’可进行绘制。

5.4、散点图

散点图主要用来表现数据之间的规律。

绘制散点图,kind='scatter'

小总结:

1、plot方法默认情况,绘制的是线形图;

2、增加参数kind=’bar’或kind=’barh’绘制柱状图或水平柱状图,设置plot的stacked参数可以绘制堆积柱状图;

3、当kind=’kde’可以绘制KDE图,即密度图;

4、当kind=’scatter’可以绘制散点图;

5、还有一个特殊的直方图,使用的是hist方法。

六、综合示例—小费数据集

数据分析的流程通常情况下分为5步。

(1)收集数据。在这一步中,需要对收集的数据有一定的认知,对各字段的 含义和背景知识都要有着足够的理解。

(2)定义问题。根据各自的行业和业务知识,对数据定义多个待解决的问题 。

(3)数据清洗与整理。由于各种问题,获取的数据不够“干净” ,需通过各 种手段对数据进行清洗与整理,以便得到准确的分析结果。

(4)数据探索。通过可视化等手段,对数据进行分析和探索,得出结论。

(5)数据展示。这部分用于输出,或撰写数据分析报告、或汇报给上级、或 绘制PPT

举例:

小费数据集来源于Python第三方库seaborn(用于绘图)中自带 的数据,加载该数据集

注意:head函数会返回前5条数据,也可指定返回数据行数。

python中不能使用索引运算的是_Python数据分析之Pandas库(笔记)相关推荐

  1. Python中的负索引是什么?

    Python中的序列索引可以是正也可以是负. 如果是正索引,0是序列中的第一个索引,1是第二个索引. 如果是负索引,-1是最后一个索引,-2是倒数第二个索引. >>> lst=[11 ...

  2. 取模是什么意思python_原来Python中的取模运算方法竟然是这样的!

    今天小编就为大家分享一篇Python中的取模运算方法,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 所谓取模运算,就是计算两个数相除之后的余数,符号是%.如a % b就是计算a除以b ...

  3. Python中的取整运算

    Python中的取整运算 1.int()向下取整 1 n = 3.75 2 print(int(n)) >>>3 2.round() 四舍五入取整 1 n = 3.75 2 prin ...

  4. python列表的索引是从0开始的_为什么python中list的索引从0开始?

    java建立数组, int[] a = new int[3], 建立一个以为数组并将其初始化位3个位置的内存, a[1] = 3;java的索引从0开始,而C和python是从0开始的. 为什么pyt ...

  5. Python数据分析~Pandas库30分钟快速入门

    目录 1  Pandas序列和数据表 2 Pandas数据聚合与分组运算 3 Pandas数据可视化 Pandas库在数据分析中是非常重要和常用的库,它利用数据框让数据的处理和操作变的简单和快捷.在数 ...

  6. Python数据分析之Pandas库

    Python数据分析之Pandas库 一.Pandas简介 二.Pandas库的安装 三.Pandas的数据结构 四.Series 和 DataFrame 数据结构的使用 五.其他可以参考的网站 一. ...

  7. 数据分析之pandas学习笔记(六)(层次化索引、重塑、轴向旋转、行列变换、合并表数据)

    数据分析之Pandas学习笔记(六)(层次化索引.重塑.轴向旋转.行列变换.合并表数据) level层次化索引 unstack()与stack()进行重塑,即:行列索引变换 swaplevel()交换 ...

  8. python中不能使用下标运算的是_下列选项中,不能使用下标运算的是() (3.0分)_学小易找答案...

    [判断题]列表的索引是从0开始的 (3.0分) [填空题]Python中的可变数据类型有____和____. (5.0分) [填空题]A word is a m____free form that h ...

  9. 2!=5 or 0在python中是否正确-Python 中的 or and 运算,看这一篇就够

    问题出现: Python 中的 or,and 运算,可以写出比较复杂的演算表达式: 看了一些大神的演算规则解释,觉得不是很好理解,有些人甚至理解错了规则. 这里聊一下自己的理解. 其他人是怎么做的: ...

最新文章

  1. 设计模式 -- 策略模式
  2. mongodb安装_MongoDB索引策略和索引类型
  3. 企业网络推广中用户行为到底能为企业网络推广带来多少影响?
  4. 【VB测绘程序设计】第一章 VB测绘程序设计概述
  5. 青岛大学计算机科学技术学院官网,田呈亮 - 青岛大学 - 计算机科学技术学院
  6. [苹果技巧]苹果系统用于系统监控和管理的命令
  7. Ubuntu安装OpenTSDB
  8. python3 写入excel_Python3 读、写Excel文件的操作方法
  9. FFmpeg之编译ffplay(十四)
  10. [软件工程] 面向对象方法学引论
  11. 用于文本去重(相似度计算)的Simhash算法学习及python实现(持续学习中)
  12. 大数据技术与实践实验报告总结_大数据平台搭建实验心得体会
  13. 随机矩阵理论_随机PWM可降低噪声并减少三相逆变器应用中的辐射
  14. JS获取手机型号和系统版本
  15. 解决IntelliJ IDEA中打开JSP文件(使用快捷键Alt+F2)时,弹出的浏览器网页只显示JSP源码
  16. 小程序如何获取用户名和头像?
  17. mysql sql执行效率_一顿操作猛如虎,SQL执行效率提高250
  18. kubernetespod控制器详解上
  19. 数学建模比赛题型划分、常用算法及其适用场景
  20. freeswitch呼入落地测试信息

热门文章

  1. c++ 异常处理(1)
  2. 【已解决】关于SQL2008 “不允许保存更改。您所做的更改要求删除并重新创建以下表。您对无法重新创建的标进行了更改或者启用了‘阻止保存要求重新创建表的更改’” 解决方案
  3. 了解React.js中数组子项的唯一键
  4. 使用PHP将HTML + CSS转换为PDF? [关闭]
  5. PHP 7.3声称速度比PHP 5快3倍还多,值得更新了!
  6. rsync 常见错误与解决方法整理
  7. 产品经理原型图神器有望超越Axure 的软件sketch 48.2 for Mac 中文破解版下载
  8. 检查mysql当前状态
  9. 计算机网络或计算机基础知识点滴1
  10. Python之字符串格式化(format)