Python数据分析pandas模块用法实例详解


Posted in Python onNovember 20, 2019

本文实例讲述了Python数据分析pandas模块用法。分享给大家供大家参考,具体如下:

pandas

pandas10分钟入门,可以查看官网:10 minutes to pandas

也可以查看更复杂的cookbook

  • pandas是非常强大的数据分析包,pandas 是基于 Numpy 构建的含有更高级数据结构和工具的数据分析包。就好比 Numpy的核心是 ndarray,pandas 围绕着 Series 和 DataFrame 两个核心数据结构展开 。Series和DataFrame 分别对应于一维的序列和二维表结构。

创建对象

常规导入方式:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

Series

  • Series 可以看做一个定长的有序字典,它是能够保存任何数据类型(整数,字符串,浮点数,Python对象等)的一维标记数组。
  • Series对象包含两个主要的属性:index 和 values。
  • 数据可以是Python字典、 ndarray、scalar value标量值(如5)等
  • 创建时有没有index都会设置默认下标,但是索引用的是数组时会默认使用创建时的索引
  • 创建时还可以指定name名字属性,之后可以修改 rename
ser1 = pd.Series(range(10,15),index=list('ABCDE'))
print(ser1)
# 下标和索引等同
print(ser1['A'])
print(ser1[0])

输出:

A    10
B    11
C    12
D    13
E    14
dtype: int64
10
10

取连续多个数据时,下标取值不包含结束位置,索引切片包括结束位置

print(ser1['A':'D'])
print(ser1[0:3])

输出:

A    10
B    11
C    12
D    13
dtype: int64
A    10
B    11
C    12
dtype: int64

取多个数据、条件筛选(布尔索引)

# 注意里面是一个列表
print(ser1[[0,1,3]])
# 布尔索引
print(ser1[(ser1>12)&(ser1<15)])

DataFrame

DataFrame是二维标记数据结构。 您可以将其视为电子表格或SQL表,或Series对象。 它通常是最常用的pandans对象。 像Series一样,DataFrame接受许多不同种类的输入:

  • Dict of 1D ndarrays, lists, dicts, or Series
  • 2-D numpy.ndarray
  • Structured or record ndarray
  • A Series
  • Another DataFrame
df1 = pd.DataFrame(np.random.randint(10,50,(3,4)), - index=list('ABC'),columns=list('abcd'))
  • index是行索引,colums是列索引
  • 用字典创建时,键名就是列索引,而且键值可以为列表,会自动补齐

取单行或单列数据,取单个数据

# 列取值,取出的是一个series对象
print(df1['a'])
print(df1['a'].values)
# 取出一行数据的某一行数据,也就是单个数据
print(df1['a']['B']) # 这两个一样
print(df1['a'][1])

取不连续多列,取连续多列(默认不支持连续,需要高级索引)

# 取不连续多列
print(df1[['a','c']])

行索引,可以直接切片,但是默认不能不连续多行取值,下标同理

print('行索引取值##############')
print(df1['A':'A'])
# 取连续多行就是df1['A':'C']

高级索引(花式索引)

一般情况用于DataFrame,这里直接略过Series

loc标签索引

df1 = pd.DataFrame(np.random.randint(10,50,(5,4)), index=list('ABCDE'),columns=list('abcd'))
# 取单行,类型是series
print(df1.loc['A'])
print(type(df1.loc['A']))
# 取连续多行,类型是DataFrame
print(df1.loc['A':'C'])
# 如果没有index索引就用下标,可以取连续多行连续多列
print(df1.loc['A':'D','a':'c'])
# 取不连续多行不连续多列
print(df1.loc[['A','C'],['a','c']])

iloc 位置索引

iloc是下标和lo用法一样,但是下标索引左闭右开,loc是包括最后一位

# DataFrame
print(df1.iloc[0:2, 0]) # 注意和df1.loc['A':'C', 'a']的区别
print(df1.loc['A':'C', 'a'])

ix 标签与位置混合索引

博主使用的pandas 0.24.2版本已经弃用.ix了(warning但还能使用),所以也就不写了

  • ix是以上二者的综合,既可以使用索引编号,又可以使用自定义索引,要视情况不同来使用,
  • 如果索引既有数字又有英文,那么这种方式是不建议使用的,容易导致定位的混乱。

增加数据

1 2
增加一行数据 1.df1.loc[‘D'] = [1,2,3,4,5] 2.df1.loc[‘D'] = [np.random.randint(10,20)]
增加一列数据 df1.

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python3基础之基本数据类型概述
Aug 13 Python
wxPython事件驱动实例详解
Sep 28 Python
详解python3百度指数抓取实例
Dec 12 Python
Python正则替换字符串函数re.sub用法示例
Jan 19 Python
视觉直观感受若干常用排序算法
Apr 13 Python
pandas DataFrame数据转为list的方法
Apr 11 Python
Python3爬虫学习之将爬取的信息保存到本地的方法详解
Dec 12 Python
对python中的try、except、finally 执行顺序详解
Feb 18 Python
浅谈Python大神都是这样处理XML文件的
May 31 Python
python读取hdfs上的parquet文件方式
Jun 06 Python
Python reversed反转序列并生成可迭代对象
Oct 22 Python
Python实现列表拼接和去重的三种方式
Jul 02 Python
Python学习笔记之函数的参数和返回值的使用
Nov 20 #Python
Python求解正态分布置信区间教程
Nov 20 #Python
Python pandas RFM模型应用实例详解
Nov 20 #Python
使用Python实现正态分布、正态分布采样
Nov 20 #Python
Python pandas自定义函数的使用方法示例
Nov 20 #Python
Python求正态分布曲线下面积实例
Nov 20 #Python
复化梯形求积分实例——用Python进行数值计算
Nov 20 #Python
You might like
20个PHP常用类库小结
2011/09/11 PHP
PHP图片等比例缩放生成缩略图函数分享
2014/06/10 PHP
用PHP代替JS玩转DOM的思路及示例代码
2014/06/15 PHP
PHP错误Warning:mysql_query()解决方法
2015/10/24 PHP
php结合web uploader插件实现分片上传文件
2016/05/10 PHP
PHP实现的随机IP函数【国内IP段】
2016/07/20 PHP
php自定义函数实现二维数组按指定key排序的方法
2016/09/29 PHP
Yii2针对游客、用户防范规则和限制的解决方法分析
2016/10/08 PHP
PHP递归遍历文件夹去除注释并压缩php源代码的方法示例
2018/05/23 PHP
利用jQuery的$.event.fix函数统一浏览器event事件处理
2009/12/21 Javascript
JS中Iframe之间传值及子页面与父页面应用
2013/03/11 Javascript
JS实现拖动滚动条评分的效果代码分享
2016/09/29 Javascript
JS实现HTML标签转义及反转义
2020/04/14 Javascript
详解Vue 动态添加模板的几种方法
2017/04/25 Javascript
vue.js移动端app之上拉加载以及下拉刷新实战
2017/09/11 Javascript
基于vue-cli创建的项目的目录结构及说明介绍
2017/11/23 Javascript
使用 vue 实现灭霸打响指英雄消失的效果附demo
2019/05/06 Javascript
vue项目中定义全局变量、函数的几种方法
2019/11/08 Javascript
详解Vue.js 响应接口
2020/07/04 Javascript
python获取Linux下文件版本信息、公司名和产品名的方法
2014/10/05 Python
python如何求解两数的最大公约数
2018/09/27 Python
Python功能点实现:函数级/代码块级计时器
2019/01/02 Python
快速解决vue.js 模板和jinja 模板冲突的问题
2019/07/26 Python
Python求正态分布曲线下面积实例
2019/11/20 Python
Django实现将views.py中的数据传递到前端html页面,并展示
2020/03/16 Python
Python matplotlib可视化实例解析
2020/06/01 Python
django 装饰器 检测登录状态操作
2020/07/02 Python
pandas to_excel 添加颜色操作
2020/07/14 Python
python 如何利用argparse解析命令行参数
2020/09/11 Python
ProBikeKit新西兰:自行车套件,跑步和铁人三项装备
2017/04/05 全球购物
C语言面试题
2013/05/19 面试题
女方回门宴答谢词
2014/01/14 职场文书
《浅水洼里的小鱼》听课反思
2014/02/28 职场文书
运动会通讯稿50字
2015/07/20 职场文书
小学班主任工作随笔
2015/08/15 职场文书
Android开发手册自定义Switch开关按钮控件
2022/06/10 Java/Android