pandas是python下强大的数据分析和探索工具,是的python在处理数据时非常快速、简单。它是构建在numpy之上的,包含丰富的数据处理函数,支持时间序列分析功能,支持灵活处理缺失数据。

pandas 基本的数据结构是 Series 和 DataFrame 。Series 就是序列,类似一维数组;DataFrame 则是相当于一张二维的表格,类似二维数组,它的每一列都是一个 Series 。

每个 Series 都会带有一个对应的 Index ,用来标记不同的元素,Index 的内容可以是字母、数字、中文等。

 Series

import numpy as np
import pandas as pd# 创建Series方法
方法1:s1 = pd.Series([1, 2, 3, 4])
方法2:s2 = pd.Series(np.arange(10)) # 通过numpy.arange创建
方法3:s3 = pd.Series({'1':1, '2':2, '3':3}) # 通过字典创建
方法4:s4 = pd.Series([1, 2, 3, 4], index=['A', 'B', 'C', 'D']) # 创建时设置索引s1.values  # 查看值
s1.index   # 查看索引

DataFrame

from pandas import Series, DataFrame
s1 = s2 = s3 = Series([1, 2, 3])
df = DataFrame([s1, s2, s3], index=['A','B','C'], columns=[0, 1, 2])
print(df)  # DataFrame 包含 index 和 column,分别为行索引和列索引
out:0  1  2
A  1  2  3
B  1  2  3
C  1  2  3df.index  # 查看行索引
df.column # 查看列索引

I/O操作(df1表示DataFrame格式数据).

1、从粘贴板读取
df1.to_clipboard()         #写入粘贴板
pd.read_clipboard()  # 复制后执行命令,即可读取到粘贴板中信息2、CSV文件
df1.to_csv('名字.csv',index=False)  # false则表示不添加索引号
pd.read_csv('df1.csv')        # 读取CSV文件3、json
df1.to_json()               # 转化成json文件
pd.read_json(df1.to_json()) # 读取json文件4、html
df1.to_html('df1_html') # 转换成HTML文件5、excel
df1.to_excel('df1.xlsx') # 生成Excel文件

查看数据(df1表示DataFrame格式数据)

df1.head() # 返回前五行
df1.tail() # 返回后五行
# 返回更多的内容则在括号中写出来,不写则默认为五行df1.iloc[:,:] # 索引切片,定位,基于index,与索引名无关
df1.loc[:,:]  # 根据索引名来,label来过滤# 取列(column)
df1[]  # 直接写column名便取得对应列,若要取多列,中括号内可以写个列表,eg:['A', 'B']df1.T  # 转置
df1.describe()  # 快速查看数据的统计概要,包括count、mean、std、min等# 排序
df1.sort_index(axis=1, ascending=False)  # 按轴排序,axis表示轴(0为列,1为行),ascending表示正反序
df1.sort_values(by='')  # by后写column,表示按该column值排序

数据运算

在 pandas 中运算会自动对齐 index 和 column 。下面举例说明。

在 Series 中,两个Series相加,会自动对齐索引,当索引没有时,则为NaN,NaN与任何数相加都为NaN

import numpy as np
import  pandas as pda=pd.Series({"a":1,"b":2,"c":3},name="one")
b=pd.Series({"d":1,"e":2,"f":3},name="two")print(a.add(b,fill_value=2))#fill_value是将两个Series中的缺失项先填充,再进行相加运算

缺失值

缺失值可以用 numpy.nan 来表示,NaN 具有传染性,换句话说就是与 NaN 进行运算的结果都是 NaN 。对于含有 NaN 的普通函数计算结果均为 NaN,例如:

a = numpy.array([2, 3, 1, numpy.nan, 4])numpy.sum(a)\numpy.min(a)\numpy.max(a)等均为NaN# 但是其有安全模式,也就是忽略其中的 NaN 进行运算
numpy.nansum(a)\numpy.nanmin(a)\numpy.nanmax(a) 均会在已有数据中求相应的和,最大最小值

缺失值的发现

data.isnull()
data.notnull()
# 均返回布尔值

缺失值的去除

data.dropna(axis=0,how='any',thresh=None)
# axis表示行和列0,1来表示
# how为any时表示有Nan就删掉,为all时表示全为nan时才删掉
# thresh表示一个界限,超过这个数字的nan则被删掉

缺失值的填充

data.fillna(axis=0, method=ffill)  # 或者参数只填一个数,即用该数字填充
axis 坐标轴,行或列
method 填充方式ffill:forward-fill 从前向后填充bfill:backward-fill 从后向前填充

合并(merge)

结合(concat)
pandas.concat(df1, df2, df3)连接(join)
left = pd.DataFrame({'key': ['foo', 'foo'], 'lval':[1, 2]})
right = pd.DataFrame({'key': ['foo', 'foo'], 'rval':[1, 2]})
pd.merge(left, right, on="key")
out:key  lval  rval
0  foo     1     4
1  foo     1     5
2  foo     2     4
3  foo     2     5追加(append)
data1.append(data2, ignore_index=True)

数据透视表(Pivot Tables)

当分析庞大的数据时,为了更好的发掘数据特征之间的关系,且不破坏原数据,就可以利用透视表 `pivot_table` 进行操作。

新建表将 `A, B, C` 列作为索引进行聚合。
df = pd.DataFrame({'A': ['one', 'one', 'two', 'three'] * 3,'B': ['A', 'B', 'C'] * 4,'C': ['foo', 'foo', 'foo', 'bar', 'bar', 'bar'] * 2,'D': np.random.randn(12),'E': np.random.randn(12)})pd.pivot_table(df, index=['A', 'B'])1、透视表按指定行进行聚合
将该 DataFrame 的 `D` 列聚合,按照 `A, B` 列为索引进行聚合,聚合的方式为默认求均值。
pd.pivot_table(df, values=['D'], index=['A', 'B'])2、透视表聚合方式定义
上一题中 `D` 列聚合时,采用默认求均值的方法,若想使用更多的方式可以在 `aggfunc` 中实现。
pd.pivot_table(df, values=['D'], index=['A', 'B'], aggfunc=[np.sum, len])3、透视表利用额外列进行辅助分割
`D` 列按照 `A, B` 列进行聚合时,若关心 `C` 列对 `D` 列的影响,可以加入 `columns` 值进行分析。
pd.pivot_table(df, values=['D'], index=['A', 'B'],columns=['C'], aggfunc=np.sum)4、透视表的缺省值处理
在透视表中由于不同的聚合方式,相应缺少的组合将为缺省值,可以加入 `fill_value` 对缺省值处理。
pd.pivot_table(df, values=['D'], index=['A', 'B'],columns=['C'], aggfunc=np.sum, fill_value=0)

转载地址:https://www.cnblogs.com/yudanqu/p/12442900.html

python库之pandas相关推荐

  1. Python库学习-Pandas

    文章目录 1.序列与数据框创建(Series,DataFrame) 2.读取外部数据 3.数据类型转换及描述统计 4.字符与日期数据处理 5.常用的数据清洗方法 5.1 重复观测处理 5.2 缺失值处 ...

  2. 【python 库】 pandas 教程

    文章目录 Pandas 安装 1. 实例 - 查看 pandas 版本 2. 一个简单的 pandas 实例: Pandas 数据结构 - Series 1. 创建一个简单的 Series 实例(通过 ...

  3. python库:Pandas学习笔记

    Pandas数据读取 food_info = pandas.read_csv("文件名") 读取csv文件 print(type(food_info)) 显示food_info的类 ...

  4. python大神作品_掌握了这24个顶级Python库,你就是大神!

    全文共11815字,预计学习时长24分钟 Python有以下三个特点: · 易用性和灵活性 · 全行业高接受度:Python无疑是业界最流行的数据科学语言 · 用于数据科学的Python库的数量优势 ...

  5. python代码库-吐血整理!绝不能错过的24个Python库

    Python有以下三个特点: 易用性和灵活性 全行业高接受度:Python无疑是业界最流行的数据科学语言 用于数据科学的Python库的数量优势 事实上,由于Python库种类很多,要跟上其发展速度非 ...

  6. 入门机器学习的必备Python库

    点击关注我哦 一篇文章带你了解入门机器学习的必备Python库 1. Pandas Pandas模块是python一个开源库,包含DataFrame和Series两种数据结构用于组织数据极为有用.Pa ...

  7. python时间函数报错_python3中datetime库,time库以及pandas中的时间函数区别与详解...

    1介绍datetime库之前 我们先比较下time库和datetime库的区别 先说下time 在 Python 文档里,time是归类在Generic Operating System Servic ...

  8. python获取系统时间函数_python3中datetime库,time库以及pandas中的时间函数区别与详解...

    1介绍datetime库之前 我们先比较下time库和datetime库的区别 先说下time 在 Python 文档里,time是归类在Generic Operating System Servic ...

  9. python optimize_Python的五大常用库——numpy,pandas,matplotlib等

    Numpy Numpy 是python科学计算的基础包,本书大部分内容都基于numpy以及构建于其上的库.其功能有: 快速高效的多维数组对象ndarray 用于对数组执行元素级计算以及直接对数组执行数 ...

最新文章

  1. Hadoop - MapReduce MRAppMaster-剖析
  2. 浦发银行(600000.sh):与中国移动珠联璧合联姻
  3. Centos7 编译安装 Nginx、MariaDB、PHP
  4. MySQL 高级 - 存储过程 - 语法 - repeat循环
  5. 看一遍就理解,图解单链表反转
  6. drop 很慢 物化视图_终于解决了物化视图复制的问题
  7. MIME协议及源邮件格式分析
  8. Java基础知识强化之集合框架笔记27:ArrayList集合练习之去除ArrayList集合中的重复字符串元素...
  9. python+Tesseract-OCR实现图片识别(只适合新手)
  10. 5年时间,我从开发做到总裁的秘籍--如何提升技术型管理者的领导力
  11. 二改注册登录版素材代下载搜索引擎系统源码,自带火车头采集
  12. 原 jQuery基础修炼圣典—DOM篇
  13. 英特尔显示器音频_骁龙865、全球最快32寸显示器、高达联名路由……这场发布会为电竞玩家带来多少高科技?...
  14. char类型输出地址
  15. SQL:postgresql中判断字段是否为某个值的方法IN操作符
  16. 决策树分类器vc维如何计算_机器学习入门第三章:决策树分类器-理论
  17. LitJson扩展基础类型
  18. SQL注入不完全思路与防注入程序
  19. 仿真技术在控制系统中的应用 ---飞机姿态控制仿真( 俯仰角)
  20. 用计算机用图解法求理论塔板数,简洁法计算理论板数工具

热门文章

  1. Element ui 中的Upload用法
  2. Rest接口中正则表达式
  3. 关于外键,再唠叨一下下
  4. 运算符的优先级表(从高到低)
  5. android.content.res.Resources$NotFoundException: String resource ID XXXX
  6. Linux数据库1366错误,ERROR 1366 (HY000): Incorrect string value:’XXX’ for column 'XXX at row 1解决...
  7. php 转发邮件,PHP Email();我不接收转发的电子邮件
  8. curry化 js_前端发动机从 bind 聊到 curry (柯里化)
  9. 编译linux源码,linux源码树编译
  10. python编程胡牌将是什么意思_OpenCV+Python识别车牌和字符分割的实现