【学习】pandas 基础介绍说明 【pandas】
本文来源于《利用python进行数据分析》中文版,大家有兴趣可以看原版,入门的东西得脚踏实地哈
1、pandas 数据结构介绍
首先熟悉它的两个主要数据结构,Series 和 DataFrame
Series 是一种类似于一维数组的对象,它由一组数据以及一组与之相关的数据标签组成。
obj = pd.Series([4, 7, -5, 3]) obj
Out[4]:
0 4
1 7
2 -5
3 3
dtype: int64
Series字符串表现形成为:索引在左,值在右,可以通过Series的values和index属性获取其数组表示形式和索引对象
obj.values
Out[5]: array([ 4, 7, -5, 3], dtype=int64)
obj.index
Out[6]: RangeIndex(start=0, stop=4, step=1)
对各个数据点进行标记索引
obj2 = pd.Series([4, 7], index =['d', 'b']) obj2
Out[8]:
d 4
b 7
dtype: int64
Numpy数组运算会保留索引和值之间的链接
还可以将Series看成是一个定长的有序字典,因为它是索引值到数据值的一个映射。
如果数据被存入在一个python字典中,也可以直接通过这个字典来创建Series
sdata = {'name1': 'tom', 'name2': 'Jerry'}
obj3 = pd.Series(sdata)
obj3
Out[11]:
name1 tom
name2 Jerry
dtype: object
如果只传入一个字典,则结果Series中的索引就是原字典的键(有序排列)
states = ['name1', 'name2', 'name3'] obj4 = pd.Series(sdata, index = states) obj4
Out[17]:
name1 tom
name2 Jerry
name3 NaN
dtype: object
#注意找不到是直接变为NaN
pandas 的isnull 和 notnull 函数可用于检测缺失数据
对于许多应用而言, Series最重要的一个功能是:它在算术运算中会自动对齐不同索引的数据。
Series的索引可以通过赋值的方式就地修改
==========================================================================================
DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同中的值类型(数值、字符串、布尔值等)。DataFrame即有行索引也有列索引,它可以被看做由Series
组成的字典(共用同一索引)。DataFrame中面向行和列的操作基本上是平衡的。其实DataFrame中的数据是以一个或多个二维块存放的,而不是列表、字典或别的一维数据结构。
(注意:虽然DataFrame是以二维结构保存数据的,但你仍然可以轻松地将其表示为更高维度的数据,层次 化索引的表格型结构,这是pandas中许多高级数据处理功能的关键要素)
构建DataFrame的办法有很多,最常用的一种是直接传入一个由等长列表或NumPy数组组成的字典:
结果dataframe会自动加上索引,且全部列会被有序排列:
data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada'],
'year': [2000, 2001, 2002, 2001, 2002],
'pop': [1.5, 1.7, 3.6, 2.4, 2.9]}
frame = pd.DataFrame(data)
frame
Out[20]:
pop state year
0 1.5 Ohio 2000
1 1.7 Ohio 2001
2 3.6 Ohio 2002
3 2.4 Nevada 2001
4 2.9 Nevada 2002
如果指定了列序列,则DataFrame的列就会按照指定顺序进行排列:
pd.DataFrame(data, columns = ['year', 'state', 'pop'])
Out[21]:
year state pop
0 2000 Ohio 1.5
1 2001 Ohio 1.7
2 2002 Ohio 3.6
3 2001 Nevada 2.4
4 2002 Nevada 2.9
这个非常重要,数据分析中经常用到,也可以pd.DataFrame(data, columns = ['year', 'state''])只取两列
pd.DataFrame(data, columns = ['year', 'state'])
Out[22]:
year state
0 2000 Ohio
1 2001 Ohio
2 2002 Ohio
3 2001 Nevada
4 2002 Nevada
跟Series一样,如果传入的列在数据中找不到,就会产生NA值:
frame2 = pd.DataFrame(data, columns = ['year', 'state', 'pop', 'debt'], index = ['one', 'two', 'three', 'four', 'five']) frame2
Out[26]:
year state pop debt
one 2000 Ohio 1.5 NaN
two 2001 Ohio 1.7 NaN
three 2002 Ohio 3.6 NaN
four 2001 Nevada 2.4 NaN
five 2002 Nevada 2.9 NaN
frame2.columns
Out[27]: Index(['year', 'state', 'pop', 'debt'], dtype='object')
通过类似字典标记的方式或属性的方式,可以将DataFrame的列获取为一个Series:
frame2['state']
Out[28]:
one Ohio
two Ohio
three Ohio
four Nevada
five Nevada
Name: state, dtype: object frame2.year
Out[29]:
one 2000
two 2001
three 2002
four 2001
five 2002
Name: year, dtype: int64
frame2.ix['three']
Out[30]:
year 2002
state Ohio
pop 3.6
debt NaN
Name: three, dtype: object
列可以通过赋值的方式进行修改
frame2['debt'] = 16.5 frame2
Out[32]:
year state pop debt
one 2000 Ohio 1.5 16.5
two 2001 Ohio 1.7 16.5
three 2002 Ohio 3.6 16.5
four 2001 Nevada 2.4 16.5
five 2002 Nevada 2.9 16.5
frame2['debt'] = np.arange(5) frame2
Out[35]:
year state pop debt
one 2000 Ohio 1.5 0
two 2001 Ohio 1.7 1
three 2002 Ohio 3.6 2
four 2001 Nevada 2.4 3
five 2002 Nevada 2.9 4
将列表或数组赋值给某个列时,其长度必须跟DataFrame的长度相匹配。如果赋值的是一个Series,就会精确匹配DataFrame的索引,所有的空位都将被填上缺失值
val = pd.Series([-1.2, -1.5, -1.7], index = ['two', 'four', 'five']) frame2['debt'] = val frame2
Out[38]:
year state pop debt
one 2000 Ohio 1.5 NaN
two 2001 Ohio 1.7 -1.2
three 2002 Ohio 3.6 NaN
four 2001 Nevada 2.4 -1.5
five 2002 Nevada 2.9 -1.7
为不存在的列赋值会创建出一个新列。关键字del用于删除列:
frame2['eastern'] = frame2.state == 'Ohio' frame2
Out[41]:
year state pop debt eastern
one 2000 Ohio 1.5 NaN True
two 2001 Ohio 1.7 -1.2 True
three 2002 Ohio 3.6 NaN True
four 2001 Nevada 2.4 -1.5 False
five 2002 Nevada 2.9 -1.7 False
del frame2['eastern'] frame2.columns
Out[43]: Index(['year', 'state', 'pop', 'debt'], dtype='object')
输入给DataFrame构造器的数据,列出了构造函数所能接受的各种数据

如果设置了DataFrame的index和columns的name属性,则这些信息也会被显示出来
跟Series一样, values属性也会以二维ndarray的形式返回DataFrame中的数据:
如果DataFrame各列的数据类型不同,则值数组的数据类型就会选用能兼容所有列的数据类型
2、索引对象
pandas的索引对象负责管理轴标签和其他元数据,构建Series或DataFrame时,所用到的任何数组或其他序列的标签都会被转换成一个index
obj = pd.Series(range(3), index = ['a', 'b', 'c']) index = obj.index index
Out[46]: Index(['a', 'b', 'c'], dtype='object')
index对象是不可修改的,因此用户不能对其进行修改
不可修改性非常重要,因为这样才能使index对象在多个数据结构之间安全共享
index = pd.Index(np.arange(3))
obj2 = pd.Series([1.5, - 2.5, 0], index = index) obj2.index is index
Out[48]: True
注意:虽然大部分用户都不需要知道太多关于Index对象的细节,但它们确实是pandas数据模型的重要组成部分
pandas中主要的index对象

每个索引都有一些方法和属性,它们可用于设置逻辑并回答有关该索引所包含的数据的常见问题
Index 的方法和属性

【学习】pandas 基础介绍说明 【pandas】的更多相关文章
- pandas 基础介绍与概览
pandas是 基于NumPy数组构建的,特别是基于数组的函数和不使用for循环的数据处理 相关联的几个库, 分析库 scikit-learn 和 statsmodels 数值计算工具,NumPy 可 ...
- 数据库中间件DBLE学习(一) 基础介绍和快速搭建
dble基本架构简介 dble是上海爱可生信息技术股份有限公司基于mysql的高可用扩展性的分布式中间件.江湖人送外号MyCat Plus.开源地址 我们首先来看架构图,外部应用通过NIO/AIO进行 ...
- python学习 day01 基础介绍
一.编程的目的 1.什么是语言?编程语言又为何? 语言是一种事物与另外一种事物沟通的介质.编程语言是程序员和计算机沟通的介质. 2.什么是编程? 程序员把自己想要计算机做的事用编程语言表达出来,编程的 ...
- Hbase学习Hbase基础介绍
一.产生背景 自1970年以来,关系数据库用于数据存储和维护有关问题的解决方案.大数据的出现后,好多公司实现处理大数据并从中受益,并开始选择像Hadoop的解决方案.Hadoop使用分布式文件系统,用 ...
- python学习笔记(四):pandas基础
pandas 基础 serise import pandas as pd from pandas import Series, DataFrame obj = Series([4, -7, 5, 3] ...
- Python 数据分析(一) 本实验将学习 pandas 基础,数据加载、存储与文件格式,数据规整化,绘图和可视化的知识
第1节 pandas 回顾 第2节 读写文本格式的数据 第3节 使用 HTML 和 Web API 第4节 使用数据库 第5节 合并数据集 第6节 重塑和轴向旋转 第7节 数据转换 第8节 字符串操作 ...
- 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍
一.pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主要目的是为了数据分析.它提供了大量高级的数据结构和对数据处理的方法. pandas 有两个主要的数据结构 ...
- Pandas基础学习与Spark Python初探
摘要:pandas是一个强大的Python数据分析工具包,pandas的两个主要数据结构Series(一维)和DataFrame(二维)处理了金融,统计,社会中的绝大多数典型用例科学,以及许多工程领域 ...
- Pandas基础(十一)时间序列
1. pandas时间序列:时间索引 2. pandas时间序列数据结构 2.1 定期序列 3. 频率和偏移 4. 重采样,转移,加窗口 4.1 重采样及频率转换 4.2 时间移动 4.3 滚动窗口 ...
随机推荐
- 网络知识梳理--OSI七层网络与TCP/IP五层网络架构及二层/三层网络(转)
reference:https://www.cnblogs.com/kevingrace/p/5909719.html https://www.cnblogs.com/awkflf11/p/9190 ...
- Java语法基础学习DayTwelve(泛型)
一.泛型(Generic)在集合中的使用 1.作用 (1)解决元素存储的安全问题 (2)解决获取数据元素时,需要类型强转的问题 2.代码案例 //在集合没有使用泛型的情况下 List list = n ...
- linux下的mysql
1.到下面地址下载通用二进制包 wget http://mirrors.sohu.com/mysql/MySQL-5.5/mysql-5.5.53-linux2.6-x86_64.tar.gz 2.具 ...
- TOJ-5395 大于中值的边界元素
描述 给定一个二维数组,求二维数组的边界元素中,大于二维数组“中值”的元素个数.这里的“中值”定义为一个元素序列中: (1)当元素个数为奇数时,即为中间大的元素: (2)当元素个数为偶数时,为中间大的 ...
- Sql Server索引重建
公司线上数据有几千万数据,有时候索引碎片会导致索引达不到我们的预期查询效率,这个时候将索引重建将会提升一定效率,不过重建的时候一定得晚上用户少的时候,索引重建需要一定时间. 直接贴自动重建索引脚本吧 ...
- Python 判断是否可以转化为浮点数及其他数字类型
Python中出现ValueError: could not convert string to float:应该怎么处理 import sys import math # 判断是否为浮点数 def ...
- 前端基础----CSS语法、CSS四种引入方式、CSS选择器、CSS属性操作
一.CSS语法 CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明. 例如: h1 {color:red; font-size:14px;} 二.CSS四种引入方式 1,行内式 行内式是在标 ...
- Windows下struct和union字节对齐设置以及大小的确定(一 简介和结构体大小的确定)
在windows下设置字节对齐大小的方式,目前我了解有三种: 1. 在编译程序时候的编译选项 /Zp[n],如 cl /Zp4 表示对齐大小是4字节: 2. 预处理命令 #pragma pack ...
- 第十四章 Java常用类
14.常用类 14.1 字符串相关的类 1课时 14.2 JDK 8之前时间日期API 1课时 14.3 JDK8中新时间日期API 1课时 14.4 JDK8中的Optional类 1课时 14.5 ...
- axiso实战问题
this.axios({ method: 'get', url: '/api/projectmgt/project/Project/list', withCredentials : true, hea ...