Pandas基础语法

  • 数据类型
    • Series
    • DataFrame
  • 数据类型操作
    • 创建对象
      • Series
      • DataFrame
    • 对象属性
    • 对象方法
      • 索引
      • 重新排序
        • n.reindex()
        • n.sort_index()
        • n.sort_values()
      • 增添&修改
        • 增添行/列
      • 删除
  • 数据运算
    • 同维度
    • 不同维度

在学习pandas之前问自己三个问题

  • What is Pandas?
  • How to use Pandas?
  • 和其他数据处理第三方库相比,pandas有什么不同&相同之处?

第一个问题可以在pandas官方网站链接: link 找到答案

pandas is an open source BSD-licensed library providing high-performance, easy-to-use data structures and data analysis tools for the Python programming language.

从这一段话中我们可以知道如下信息:

  1. pandas是一个开源的第三方python库
  2. pandas主要用于数据分析,数据应用
  3. pandas提供了不止一种数据类型

第二个问题
How to use Pandas?

数据类型

要理解pandas的功能,就必须先了解pandas创建出对象的数据类型

Series

Series类型由一组数据及与之相关的数据索引组成,用于一维数组
简称:一组索引,一组值

DataFrame

DataFrame类型由共用相同索引的一组列组成,用于二维或多维数组
简称:一组索引,多组值

数据类型操作

创建对象

import pandas as pd
Series
#列表创建
#注:顺序不可调换:值在前,索引在后. index可省略
pd.Series([1,2,3,4])
pd.Series([1,2,3,4],index=[0,1,2,3])
pd.Series([1,2,3,4],[0,1,2,3])
#range函数创建
pd.Series(range(1,5,1))
#ndarray创建
pd.Series(np.array(range(1,5,1)))
#字典创建
#字典中的key相当于Series中的index
pd.Series({0:1,1:2,2:3,3:4})
#index参数可以指定索引顺序
pd.Series({0:1,1:2,2:3,3:4},index=[0,1,2,3])
#以上运行结果皆为(除np是int32以外)
Out[94]:
0    1
1    2
2    3
3    4
dtype: int64
DataFrame
#由Series&字典创建
pd.DataFrame({'one':pd.Series(range(1,3,1),['a','b']),'two':pd.Series([4,5],index=['a','b'])})
#由列表字典创建
pd.DataFrame({'one':[1,2],'two':[4,5]},index=['a','b'])
#上述两种创建方式结果均为:
Out[100]: one  two
a    1    4
b    2    5
#从二维ndarray对象创建
pd.DataFrame(np.arange(10).reshape(2,5),index=['a','b'],columns=['one','two','three','four','five'])
Out[103]: one  two  three  four  five
a    0    1      2     3     4
b    5    6      7     8     9

对象属性

#Series&DataFrame共有
n.values
n.index
#Series
n.name #需提前在创建时指定属性 n=np.Series(...,name='')
n.index.name
#DataFrame
n.columns

对象方法

适用于Series和DataFrame

get  #类似字典中的get方法
n.get(key, default=None)
key -- 字典中要查找的键。
default -- 如果指定键的值不存在时,返回该默认值。
in #判断值是否存在
存在返回True
不存在返回False
索引

pandas数据类型存在两种索引类型:

  • 数字索引( 从0开始 )

  • 自定义索引

DataFrame类型既有行索引也有列索引

#行索引
n.index
#列索引
n.columns
#值索引
n[c][i]

Series类型只有行索引

重新排序
n.reindex()

自定义行或列的排序

n.reindex(index=None, columns=None, …)
index=[你希望重排后的顺序]
columns=[你希望重排后的顺序]
  • index, columns 新的行列自定义索引
  • fill_value 重新索引中,用于填充缺失位置的值
  • method 填充方法, ffill当前值向前填充,bfill向后填充
  • limit 最大填充量
  • copy 默认True,生成新的对象,False时,新旧相等不复制
n.sort_index()

对行或列进行升序或降序排序

n.sort_index(axis=0,ascending = False)
axis 轴
#轴(axis): 保存数据的维度;秩(rank):轴的数量
axis=0 默认重排行
axis=1 重排列
ascending=False 升序(从小到大)
n.sort_values()

按值排序

DataFrame.sort_values(by, axis=0, ascending=True, inplace=False, kind='quicksort', na_position='last')
#### 参数说明
axis=0 默认重排行
axis=1 重排列
by:str or list of str;
axis=0,by="列名"
axis=1,by="行名";
ascending=True 升序(从小到大)
inplace:布尔型,是否用排序后的数据框替换现有的数据框
kind:排序方法,{‘quicksort’, ‘mergesort’, ‘heapsort’}
默认是kind='quicksort'
na_position : {‘first’, ‘last’}
na_position='last'默认缺失值排在最后面
增添&修改
增添行/列

insert方法 索引类型方法 (作用对象为index类型)

  1. 创建一个索引类型,调用insert方法
#在loc位置增加一个元素e
d.index.insert(loc,e)
d.columns.insert(loc,e)
  1. 利用reindex方法替换掉旧的行/列
n = pd.DataFrame(np.arange(10).reshape(2,5),index=['a','b'],columns=['one','two','three','four','five'])
Out[103]: one  two  three  four  five
a    0    1      2     3     4
b    5    6      7     8     9
ni=n.index.insert(2,'c')
nc=n.columns.insert(5,'six')
n.reindex(index=ni,columns=nc,fill_value=0)
Out[154]: one  two  three  four  five  six
a    0    1      2     3     4    0
b    5    6      7     8     9    0
c    0    0      0     0     0    0
删除
  • delete方法 索引类型方法
.delete(loc) 删除loc位置处的元素
用法与insert相同
  • drop
    删除Series和DataFrame指定行或列索引
n.drop(index,axis=0)
axis=0 默认是行
axis=1 列

数据运算

数据运算时,倾向将对象看做一个整体,类似行列式,矩阵;对整体进行运算

同维度

  • 算数运算
    自动补齐,索引相对应相加减
  • 比较运算
    产生布尔对象,不补齐

不同维度

默认在1轴(即航运算),如果想要进行列运算,要制定axis=0


第三个问题
和其他数据处理第三方库相比,pandas有什么不同&相同之处?
numpy是基础数据类型,常与pandas搭配使用
pandas是扩展的数据类型
numpy更注重数据维度
pandas更注重数据与索引之间的关系和运算

一种观念只能生长在一堆观念之上,学习新事物尤是如此

Pandas武功修炼秘籍(第一章:初见端倪)相关推荐

  1. Kali Linux 网络扫描秘籍 第一章 起步(一)

    第一章 起步(一) 作者:Justin Hutchens 译者:飞龙 协议:CC BY-NC-SA 4.0 第一章介绍了设置和配置虚拟安全环境的基本知识,可用于本书中的大多数场景和练习. 本章中讨论的 ...

  2. Kali Linux Web 渗透测试秘籍 第一章 配置 Kali Linux

    第一章 配置 Kali Linux 作者:Gilberto Najera-Gutierrez 译者:飞龙 协议:CC BY-NC-SA 4.0 简介 在第一章中,我们会涉及如何准备我们的 Kali 以 ...

  3. Kali Linux 秘籍 第一章 安装和启动Kali

    第一章 安装和启动Kali 作者:Willie L. Pritchett, David De Smet 译者:飞龙 协议:CC BY-NC-SA 4.0 简介 Kali Linux,简称Kali,是用 ...

  4. Kali Linux 网络扫描秘籍 第一章 起步(二)

    第一章 起步(二) 作者:Justin Hutchens 译者:飞龙 协议:CC BY-NC-SA 4.0 1.6 增加 Windows 的攻击面 为了进一步提高Windows操作系统上可用的攻击面, ...

  5. 【设计模式修炼】第一章 :获得《七大原则》

      在遥远的编程大陆,这里的人们奉行着编程为尊的原则,要想出人头地就要掌握强大的编程功法.   在众多强大的编程家族代代相传有强大功法之外,其中不乏一些失传已久的编程功法.这些功法已经随着时间的流逝散 ...

  6. Java 从死到生的修炼 (第一章:生命的起源之接触.)

    所有的程序语言的第一句总是"Hello World",当然我们跨平台的Java当然也不例外,这句话已经成为菜鸟必须要跨过的门槛 文章目录 一.为什么要学习Java?     1.简 ...

  7. JAVA修炼秘籍第六章《鏖战》

    往期: JAVA 修炼秘籍第一章:<痛苦的折磨> JAVA 修炼秘籍第二章:<逐渐魔化> JAVA 修炼秘籍第三章:<绝地反击> JAVA 修炼秘籍第四章:< ...

  8. JAVA修炼秘籍第四章《闭关修炼》

    往期: JAVA 修炼秘籍第一章:<痛苦的折磨> JAVA 修炼秘籍第二章:<逐渐魔化> JAVA 修炼秘籍第三章:<绝地反击> 文章目录 一.方法 方法的重载 方 ...

  9. JAVA修炼秘籍(番外篇)第二章:《图书馆管理系统》

    往期: JAVA 修炼秘籍第一章:<痛苦的折磨> JAVA 修炼秘籍第二章:<逐渐魔化> JAVA 修炼秘籍第三章:<绝地反击> JAVA 修炼秘籍第四章:< ...

最新文章

  1. C语言实现长整数连加,二个超长正整数的相加
  2. HDLBits 系列(27)孰对孰错 之 Fsm onehot?
  3. 【基于深度学习的脑电图识别】数据集篇:脑电信号自动判读的大数据
  4. word或wps中mathtype在工具栏/菜单栏消失的解决方法
  5. 2019ICPC(上海) - Counting Sequences I(dfs打表)
  6. oracle基于时间恢复整个数据库
  7. Linux dd命令 复制(拷贝)文件,并对原文件进行转换
  8. python定义二维数组_在python中定义二维数组
  9. HTML5 音视频操作
  10. TurboMail打造雀氏(中国)日用品邮件系统
  11. php上传视频无图像,php-PHP实现视频上传与播放,代码出现问题,求解!上传图片后提示没有上传文件或文件大于300M,是什么原因?...
  12. bzoj 1856: [Scoi2010]字符串(卡特兰数)
  13. 【译】x86程序员手册13-第5章 内存管理
  14. 到底该如何理解 Unix/Linux 的文件系统?看这篇就知道了
  15. Swift - 高级运算符介绍
  16. 异速联某客户端无法登陆
  17. 《APUE.3E》用gdb调试ftw函数(图4-22)
  18. qlv文件怎么打开 怎么把qlv文件转换成MP4的文件呢
  19. 用Python生成动态二维码,只要5行代码,拥有你的个性二维码!
  20. Android刘海屏适配

热门文章

  1. Word功能-“多级列表”-用法笔记
  2. 【闲聊杂谈】Redis中的CAP理论
  3. 使用JavaScript 中的Math对象和勾股定理公式,计算鼠标的位置与页面图片中心点的距离,根据距离对页面上的图片进行放大或缩小处理。距离远时图片放大,距离近时图片缩小
  4. python实战扫码下载_Python实例 一 12306抢票(一)扫码登陆
  5. iOS 图标alpha问题
  6. 极客时间--数据结构与算法之美
  7. android虚拟键盘挡住布局,让Android软键盘不遮挡布局
  8. 端到端的语音识别模型
  9. RS-485(物理层) 硬件接口
  10. vue之猫眼json数据的获取直接用于自己的vue项目中,swiper轮播插件的坑