Pandas是用于数据操纵和分析,建立在Numpy之上的。Pandas为Python带来了两种新的数据结构:Pandas Series和Pandas DataFrame,借助这两种数据结构,我们能够轻松直观地处理带标签数据和关系数据。

Pandas功能:

  • 允许为行和列设定标签
  • 可以针对时间序列数据计算滚动统计学指标
  • 轻松处理NaN值
  • 能够将不同的数据集合并在一起
  • 与Numpy和Matplotlib集成

Pandas Series

Pandas series 是像数组一样的一维对象,可以存储很多类型的数据。Pandas series 和 Numpy array之间的主要区别之一是你可以为Pandas series 中的每个元素分配索引标签;另一个区别是Pandas series 可以同时存储不同类型的数据。

创建 Pandas Series

pd.Series(data, index)

  1. groceries = pd.Series(data=[30, 6, 'yes', 'No'], index=['eggs', 'apples', 'milk', 'bread'])
  2. ser = pd.Series(data=[[0, 1, 2, 3], [1, 3, 5, 7], [2, 4, 6, 8]], index=(['a', 'b', 'c']))

查看 Pandas Series 属性

  1. # Pandas Series 元素数量
  2. print(groceries.size)
  3. # Pandas Series 形状
  4. print(groceries.shape)
  5. # Pandas Series 维度
  6. print(groceries.ndim)
  7. # Pandas Series 索引列表
  8. print(groceries.index)
  9. # Pandas Series 元素列表
  10. print(groceries.values)

查看是否存在某个索引标签:in

  1. print('book' in groceries)

访问 Pandas Series 中元素

Pandas Series 提供了两个属性 .loc 和 .iloc

.loc 表明我们使用的是标签索引访问

.iloc 表明我们使用的是数字索引访问

  1. # 标签索引
  2. print(groceries['eggs'])
  3. print(groceries[['eggs', 'milk']])
  4. # 数字索引
  5. print(groceries[1])
  6. print(groceries[[1, 2]])
  7. print(groceries[-1])
  8. # 明确标签索引
  9. print(groceries.loc['milk'])
  10. print(groceries.loc[['eggs', 'apples']])
  11. # 明确数字索引
  12. print(groceries.iloc[0])
  13. print(groceries.iloc[[0, 1]])

修改和删除 Pandas Series 中元素

直接标签访问,值修改就可

  1. groceries['eggs'] = 2
  2. print(groceries)

删除:drop(参数 1:lable,标签;参数 2:inplace=True/False,是/否修改原 Series)

  1. print(ser.drop(['b']))
  2. print(ser.drop(['a', 'b'], inplace=True))

Pandas Series 中元素执行算术运算

Pandas Series执行元素级算术运算:加、减、乘、除

  1. fruits = pd.Series(data=[10, 6, 3], index=['apples', 'oranges', 'bananas'])
  2. # 所有数字进行运算
  3. print(fruits + 2)
  4. print(fruits - 2)
  5. print(fruits * 2)
  6. print(fruits / 2)
  7. # 所有元素应用Numpy中的数学函数
  8. print(np.exp(fruits))
  9. print(np.sqrt(fruits))
  10. print(np.power(fruits, 2))
  11. # 部分元素进行运算
  12. print(fruits[0] - 2)
  13. print(fruits['apples'] + 2)
  14. print(fruits.loc['oranges'] * 2)
  15. print(np.power(fruits.iloc[0], 2))

Pandas DataFrame

Pandas DataFrame 是具有带标签的行和列的二维数据结构,可以存储多种类型的数据,类似于电子表格。

创建 Pandas DataFrame

第一步:创建 Pandas Series 字典

第二步:将字典传递给 pd.DataFrame

  1. items = {'Bob': pd.Series(data=[245, 25, 55], index=['bike', 'pants', 'watch']),
  2. 'Alice': pd.Series(data=[40, 110, 500, 45], index=['book', 'glasses', 'bike', 'pants'])}
  3. shopping_carts = pd.DataFrame(items)
  4. print(shopping_carts)

通过关键字 columns 和 index 选择要将哪些数据放入 DataFrame 中

  1. shopping_cart = pd.DataFrame(items, index=['bike', 'pants'], columns=['Bob'])
  2. print(shopping_cart)

访问、添加、删除 DataFrame

访问整列:dataframe[['column1', 'column2']]

  1. # 读取列
  2. print(shopping_carts[['Bob', 'Alice']])

访问整行:dataframe.loc[['row1', 'row2']]

  1. # 读取行
  2. print(shopping_carts.loc[['bike']])

访问某行某列:dataframe['column']['row'],先提供行标签,将出错。

  1. # 读取某一列某一行
  2. print(shopping_carts['Bob']['bike'])

添加整列(末尾添加列),空值用 None

  1. # 添加列
  2. shopping_carts['Mike'] = [10, 30, 10, 90, None]

添加整行(末尾添加行),把新添加行创建为 dataframe,通过 append() 添加

  1. # 添加行
  2. new_items = [{'Alice': 30, 'Bob': 20, 'Mark': 35, 'Mike': 50}]
  3. new_store = pd.DataFrame(new_items, index=['store3'])
  4. shopping_carts = shopping_carts.append(new_store)

只能删除整列:pop('lable')

  1. # 删除整列
  2. shopping_carts.pop('Jey')

删除行或者列:drop(['lable1', 'lable2'], axis=0/1)  0表示行,1表示列

  1. # 删除行
  2. shopping_carts = shopping_carts.drop(['store3', 'watch'], axis=0)

更改行和列标签

rename()

  1. # 更改列标签
  2. shopping_carts = shopping_carts.rename(columns={'Bob': 'Jey'})
  3. # 更改行标签
  4. shopping_carts = shopping_carts.rename(index={'bike': 'hats'})

处理 NaN

统计 NaN 数量:isnull().sum().sum

  1. # 数值转化为 True 或者 False
  2. print(store_items.isnull())
  3. # 每一列的 NaN 的数量
  4. print(store_items.isnull().sum())
  5. # NaN 总数
  6. print(store_items.isnull().sum().sum())

统计非 NaN 数量:count(axis=0/1)

  1. # 每一行非 NaN 的数量,通过列统计
  2. print(store_items.count(axis=1))
  3. # 每一列非 NaN 的数量,通过行统计
  4. print(store_items.count(axis=0))

删除具有NaN值的行和列:dropna(axis=0/1, inplace=True/False)  inplace默认False,原始DataFrame不会改变;inplace为True,在原始DataFrame删除行或者列

  1. # 删除包含NaN值的任何行
  2. store_items.dropna(axis=0)
  3. # 删除包含NaN值的任何列
  4. store_items.dropna(axis=1, inplace=True)

将 NaN 替换合适的值:fillna()

  1. # 将所有 NaN 替换为 0
  2. store_items.fillna(value=0)
  3. # 前向填充:将 NaN 值替换为 DataFrame 中的上个值,axis决定列或行中的上个值
  4. store_items.fillna(method='ffill', axis=1)
  5. # 后向填充:将 NaN 值替换为 DataFrame 中的下个值,axis决定列或行中的下个值
  6. store_items.fillna(method='backfill', axis=0)

加载数据

csv 格式文件,每一行都是用逗号隔开:read_csv()

  1. # 读取 csv 文件,第一行作为列标签
  2. data = pd.read_csv('data.csv')
  3. print(data)
  4. print(data.shape)
  5. print(type(data))

读取前 N 行数据:head(N)

  1. # 读取头 3 行数据
  2. print(data.head(3))

读取最后 N 行数据:tail(N)

  1. # 读取后 5 行数据
  2. print(data.tail(5))

检查是否有任何列包含 NaN 值:isnull().any()  类型 bool

  1. # 检查任何列是否有 NaN 值,返回值:bool
  2. print(data.isnull().any())

数据集的统计信息:describe()

  1. # 获取 DataFrame 每列的统计信息:count,mean,std,min,25%,50%,75%,max
  2. # 25%:四分之一位数;50%:中位数;75%:四分之三位数
  3. print(data.describe())
  4. # 通过统计学函数查看某个统计信息
  5. print(data.max())
  6. print(data.median())

数据相关性:不同列的数据是否有关联,1 表明关联性很高,0 表明数据不相关。corr()

  1. # 数据相关性
  2. print(data.corr())

数据分组:groupby(['lable1', 'lable2'])

  1. # 按年份分组,统计总薪资
  2. data.groupby(['Year'])['Salary'].sum()
  3. # 按年份分组,统计平均薪资
  4. data.groupby(['Year'])['Salary'].mean()
  5. # 按年份,部门分组,统计总薪资
  6. data.groupby(['Year', 'Department'])['Salary'].sum()

Python常用库之二:Pandas的更多相关文章

  1. 2,Python常用库之二:Pandas

    Pandas是用于数据操纵和分析,建立在Numpy之上的.Pandas为Python带来了两种新的数据结构:Pandas Series和Pandas DataFrame,借助这两种数据结构,我们能够轻 ...

  2. python 常用库整理

    python 常用库整理 GUI 图形界面 Tkinter: Tkinter wxPython:wxPython pyGTK:PyGTK pyQt:pyQt WEB框架 django:django w ...

  3. Python常用库整理

    Python常用库整理 Python中到底有哪些库会让程序员爱不释手?以至于一次上瘾,造成永久性伤害(这句话好像在哪里见过),今天我们就来整理一番这样的库,欢迎各位在评论区或者私信我添加或者修改相关库 ...

  4. python常用库安装网址

    python常用库安装网址如下: http://pypi.python.org/pypi

  5. windows下python常用库的安装

    windows下python常用库的安装,前提安装了annaconda 的python开发环境.只要已经安装了anaconda,要安装别的库就很简单了.只要使用pip即可,正常安装好python,都会 ...

  6. python常用库

    本文由 伯乐在线 - 艾凌风 翻译,Namco 校稿.未经许可,禁止转载!英文出处:vinta.欢迎加入翻译组. Awesome Python ,这又是一个 Awesome XXX 系列的资源整理,由 ...

  7. Python常用库大全

    环境管理 管理 Python 版本和环境的工具 p – 非常简单的交互式 python 版本管理工具. pyenv – 简单的 Python 版本管理工具. Vex – 可以在虚拟环境中执行命令. v ...

  8. Python常用库大全,看看有没有你需要的

    作者:史豹链接:https://www.zhihu.com/question/20501628/answer/223340838来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...

  9. python常用库(转)

    转自http://www.west999.com/info/html/wangluobiancheng/qita/20180729/4410114.html Python常用的库简单介绍一下 fuzz ...

随机推荐

  1. 一:Java基础

    /-- 第一章:概念 --/ 1.java特点:跨平台.面向对象.开源 2.JVM是Java虚拟机的缩写,可以实现跨平台 3.java运行原理: 1).编写java源文件,以.java作为后缀名 2) ...

  2. CentOS添加SSH登录提示

    前言 使用阿里云服务器的应该都注意到每次ssh登录后都能看见类似下面这样的欢迎语: Last login:xxxxxxxxxxxxx Welcome to Alibaba Cloud Elastic ...

  3. Windbg 脚本命令简介 二, Windbg command

    Windbg  脚本命令简介 二, Windbg  script command $<, $><, $$<, $$><, $$>a< (Run Scri ...

  4. json的省市联动

    1 <%@ page contentType="text/html;charset=UTF-8" language="java" %> 2 < ...

  5. Thymeleaf学习记录(8)--表达式基本对象

    基础对象 #ctx:上下文对象 /* * ====================================================================== * See ja ...

  6. along.js

    平时写代码用到的方法,就给封装了一下.需要的拿走不谢... 1.数组去重 并判断一个元素出现的次数 handle(str){ let arr=str.split('') var newarr=[]; ...

  7. LintCode2016年8月22日算法比赛----将数组重新排序以构造最小值

    将数组重新排序以构造最小值 题目描述 给定一个整数数组,请将其重新排序,以构造最小值. 样例 给定[3,32,321],通过将数组重新排序,可构造6个可能性的数字: 3+32+321=332321 3 ...

  8. 前端构建工具Gulp的学习和使用

    前几天刚鼓捣了Grunt的使用,结果文档还没捂热,老大说我们还是用gulp吧,搞得我又得来整gulp,眼泪流成河了,真是不晓得底层人民的辛苦啊.不过经过对gulp的学习,发现很好用,比grunt舒服! ...

  9. centos ntfs-3g 安装和使用

    安装fuse 下载fuse(ntfs-3g依赖fuse):http://vdisk.weibo.com/s/ajww5fZsUq50L?from=page_100505_profile&wvr ...

  10. 个人总结-9-session的使用,十天免登陆

    昨天查看bootstrap,实现了登录和注册页面的重写. 今天准备加入session实现,十天免登陆等内容. 使用bootstrap直接套用标签页,以实现.