学习笔记 Python - Pandas
Posted SAP剑客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习笔记 Python - Pandas相关的知识,希望对你有一定的参考价值。
Pandas
一、Pandas简介
Pandas是数据分析三剑客之一(Pandas、Matplotlib、Numpy),是Python核心数据分析库,提供了快速、灵活、明确的数据结构,能够简单、直观、快速地处理各种类型地数据。
Pandas能够处理以下类型地的数据:
- 与SQL或者Excel表类似的数据;
- 有序和无序(非固定频率)的时间序列数据;
- 带行、列标签的矩阵数据;
- 任意其他形式的观测、统计数据等;
Pandas提供了两个主要数据结构Series (一维数组结构)和DataFrame(二维数组结构),可以处理金融、统计、社会科学、工程等领域的大多数典型案例,并且Pandas是基于Numpy开发的,可以与其他第三方科学计算库完美集成。
维数 | 名称 | 描述 |
1 | Series | 带标签的一维同构数组 |
2 | DataFrame | 带标签的大小可变的二维异构数组 |
Pandas主要优势如下:
- 处理浮点与非浮点数据里的缺失数据,表示为NaN;
- 大小可变,例如插入或者删除DataFrame等多维对象的列;
- 自动、显式数据对齐,显式地将对象与一组标签对齐,也可以忽略标签,在Series和DataFrame计算时自动与数据对齐;
- 强大、灵活的分组统计功能(groupby),即数据聚合、数据转换;
- 把Python和Numpy数据结构里不规则、不同索引的数据轻松地转换为DataFrame对象;
- 智能标签,对大型数据集进行切片、花式索引、子集分解等操作;
- 灵活地重塑(reshape)、透视(pivot)数据集;
- 直观地合并(merge)、连接(join)数据集;
- 成熟的导入、导出工具,导入文本文件(csv等支持分隔符的文件)、Excel文件、数据库等来源的数据,导出Excel文件、文本文件等,利用超快的HDF5格式保存或加载数据;
- 时间序列:支持日期范围生成、频率转换、移动窗口统计、移动窗口线性回归、日期位移等时间序列功能;
二、Pandas安装和简单使用
最简单的可以通过PyPI(Python Package Index)的pip(python install packages)工具安装。
安装命令:pip install Pandas
Note: you may need to restart the kernel to use updated packages.
更新库:pip install --upgrade Pandas
下面通过一个Excel数据导入的例子来初识Pandas。
三、Series对象
Pandas是Python数据分析重要的库,而Series和DataFrame是Pandas库中两个重要的对象,也是Pandas中两个重要的数据结构。
Series是Python的Pandas库中一种数据结构,类似一维数组,由一组数据以及与这组数据相关的标签(即索引)组成,或者仅有一组数据没有索引也可以创建一个简单的Series。Series可以存储整数、浮点数、字符串、Python对象等多种类型的数据。
比如上面的Excel,就包含了Series对象和DataFrame对象。其中“得分”、“篮板”、“助攻”等每一列都是一个Series对象,其共同组成了一个DataFrame对象。
创建Series对象语法: s = pd.Series(data,index = index)
data:表示数据,支持Python字典、多维数组、标量值(只有大小没有方向的量);
index:表示行标签(索引);
返回值:Series对象;
手动设置Series索引
如上例所示,创建Series对象时会自动生成整数索引,默认值从0开始至数据长度减1。
除了使用默认索引,我们还可以通过index参数手动指定设置索引。
Series位置索引
位置索引是从0开始数数的,[0]是Series的第一个数,以此类推。
Series标签索引
与位置索引类似,用“[]”表示,里面是索引的名称,注意index的数据类型是字符串,如果需要获取多个标签索引值,需要用“[[]]”表示。
Series切片索引
用标签索引做切片,包头包尾(即包含索引开始位置的数据,也包含索引结束位置的数据)。
用位置索引做切片,包头不包尾(即包含索引开始位置的数据,但不包含索引结束位置的数据),这个和列表是一样的。
获取Series的索引和值
获取Series的索引和值可以使用Series的index和values方法。
四、DataFrame对象
DataFrame是Pandas库中一种由多种类型的列组成的二维表数据结构,类似于Excel、SQL或者Series对象构成的字典。
DataFrame是一个二维数据结构,由行、列数据组成的表格。DataFrame既有行索引又有列索引,可以看作是由Series对象组成的字典,不过这些Series对象共用一个索引。
创建DataFrame对象语法: df = pd.DataFrame(data,index,columns,dtype,copy)
data:表示数据,可以是ndarray数组、Series对象、列表、字典等;
index:表示行标签(索引);
columns:表示列标签(索引);
dtype:每一列数据的数据类型;
copy:用于复制数据;
返回值:返回DataFrame对象;
Pandas dtype | Python type |
object | str |
int64 | int |
float64 | float |
bool | bool |
datatime64 | datetime64[ns] |
timedelta[ns] | NA |
category | NA |
通过字典创建DataFrame
字典中的value值只能是一维数组或者单个简单数据类型,如果是数组,要求所有的数组长度一致,如果是单个数据,要求每行都添加相同的数据。
import pandas as pd
# 使列名对齐
pd.set_option('display.unicode.east_asian_width',True)
df = pd.DataFrame({
'班级':'三年二班',
'语文':[98,95,85],
'数学':[79,66,90],
'英语':[100,92,89],
},index = [0,1,2])
print(df)
DataFrame的重要属性和函数
属性 | 描述 | 例子 |
values | 查看所有元素的值 | df.values |
dtypes | 查看所有元素的类型 | df.dtypes |
index | 查看所有行名、重命名行名 | df.index df.index = [1,2,3] |
columns | 查看所有列名、重命名列名 | df.columns df.columns=[‘1’,’2’,’3’] |
T | 行列数据转换 | df.T |
head | 查看前n条数据,默认5条 | df.head() df.head(10) |
tail | 查看后n条数据,默认5条 | df.tail() df.tail(10) |
shape | 查看行数和列数,[0]行[1]列 | df.shape[0] df.shape[1] |
info | 查看索引、数据类型和内存信息 | df.info |
函数 | 描述 | 例子 |
describe | 查看每列的统计汇总信息,DataFrame类型 | df.describe() |
count | 返回每一列中的非空值的个数 | df.count() |
sum | 返回每一列的和,无法计算返回空值 | df.sum() |
max | 返回每一列的最大值 | df.max() |
min | 返回每一列的最小值 | df.min() |
argmax | 返回最大值所在的自动索引位置 | df.argmax() |
argmin | 返回最小值所在的自动索引位置 | df.argmin() |
idxmax | 返回最大值所在的自定义索引位置 | df.idxmax() |
idxmin | 返回最小值所在的自定义索引位置 | df.idxmin() |
mean | 返回每一列的平均值 | df.mean() |
median | 返回每一列的中位数(中值) | df.median() |
var | 返回每一列的方差 | df.var() |
std | 返回每一列的标准差 | df.std() |
isnull | 检查df中的空值,空值为True,否则False | df.isnull() |
notnull | 检查df中的空值,非空值为True,否则False | df.notnull() |
以上是关于学习笔记 Python - Pandas的主要内容,如果未能解决你的问题,请参考以下文章
20180428学习python笔记(pandas使用----绘图)