pandas 入门练习
pandas 是基于 Numpy 构建的含有更高级数据结构和工具的数据分析包
pandas引入规则
1 | from pandas import Series, DataFrame |
pandas 数据结构
Series
一种类似于一维数组的对象,它是由一组数据(各种Numpy数据类型)以及一组与之相关的数据标签(即索引)组成,仅由一组数据即可产生简单的 Series
通过一维数组创建 Series
1 | import numpy as np |
通过字典的方式创建 Series
Series 可以被看成是一个定长的有序字典, 是索引值到数据值的一个映射,因此可以直接通过字典来创建 Series
1 | d = {'A': 1, 'B': 2, 'C': 3, 'D': 4} |
Series 应用 Numpy 数组运算
numpy 中的数组运算,在 Series 中都保留使用,并且 Series 进行数组运算时,索引与值之间的映射关系不会改变
1 | d = {'A': 1, 'B': 2, 'C': 3, 'D': 4} |
Series 缺失值检测
- NaN 在 pandas 中用于表示一个缺失的值
- pandas 中的 isnull 和 notnull 函数可用于 Series 缺失值检测
- isnull 和 not null 都返回一个布尔类型的 Series
1 | scores = Series({"kobe": 92, "wade": 90, "ai": 90, "jordan": 100}) |
Series 自动对齐
不同 Series 之间进行算术运算, 会自动对齐不同索引的数据
1 | product_num = Series([23, 45, 67, 89], index=['p1', 'p3', 'p4', 'p2']) |
Series 及其索引的 name 属性
Series 对象本身及其索引都有一个 name
属性, 可赋值
1 | product_num = Series([23, 45, 67, 89], index=['p1', 'p3', 'p4', 'p2']) |
DataFrame
一个表格型的数据结构,含有一组有序
的列, 每列可以是不同的值类型(数值,字符串,布尔值等), DataFrame 既有行索引,也有列索引,可以被看做是由 Series 组成的字典
通过二维数组创建 DataFrame
1 | df1 = DataFrame([['kobe', 'ai', 'wade'], [81, 58, 55]]) |
通过字典的方式创建 DataFrame
1 | data = { |
索引对象
- 不管是 Series 对象还是 DataFrame 对象,都有索引对象
- 索引对象负责管理轴标签和其他元数据(比如轴名称)
- 通过索引可以从 Series, DataFrame 中取值或对某个位置的值重新赋值
- Series 或者 DataFrame 自动化对齐功能就是通过索引进行的
通过索引从 DataFrame 中取值
- 可以直接通过类索引获取指定列的数据
- 要通过行索引获取指定行数据需要 loc 方法
1 | data = { |
pandas 基本功能
常用的数学和统计方法
方法 | 说明 |
---|---|
count | 非NA值的数量 |
describe | 针对Series或各DataFrame列计算总统计 |
min/max | 计算最小值、最大值 |
argmin、argmax | 计算能够获取到最小值和最大值的索引位置(整数) |
idxmin、idxmax | 计算能够获取到最小值和最大值的索引值 |
quantile | 计算样本的分位数(0到1) |
sum | 值的总和 |
mean | 值的平均数 |
median | 值的算术中位数 (50%分位数) |
mad | 根据平均值计算平均绝对离差 |
var | 样本数值的方差 |
std | 样本值的标准差 |
cumsum | 样本值的累计和 |
cummin、cummax | 样本值的累计最小值、最大值 |
cumprod | 样本值的累计积 |
Pct_change | 计算百分数变化 |
对于 DataFrame, 这些通过统计方法, 默认是计算各列上的数据, 如果要应用于各行数据,则增加参数 axis= 1
1 | df = DataFrame([ |
1 | df.count() |
相关系数与协方差
协方差
相关系数
唯一值,值计算以及成员资格
- unique方法用于获取Series唯一值数组
- value_counts方法,用于计算一个Series中各值出现的频率
- isin方法,用于判断矢量化集合的成员资格,可用于选取Series中或者
DataFrame中列中数据的子集
1 | series = Series(["a", "b", "c", "a", "a", "b", "c"]) |
处理缺失数据
方法 | 说明 |
---|---|
dropna | 根据标签的值中是否存在缺失数据对轴标签进行过滤(删除),可通过阈值调节对缺失值的容忍度 |
findna | 用指定值或插值方法(如ffill或bfill)填充缺失数据 |
isnull | 返回一个含有布尔值的对象,这些布尔值表示哪些值是缺失值NA |
notnull | Isnull的否定式 |
1 | ## 缺失值检测 |
层次化索引
- 在某个方向上拥有多个(两个及两个以上)索引级别
- 通过层次化索引,pandas能够以低维度形式处理高维度数据
- 通过层次化索引,可以按层级统计数据
1 | series = Series([40, 20 , 24, 32], index=[['West', 'West', 'East', 'East'],['Westbrook', 'kuzma', 'Brown', 'James']] ) |
文章标题:pandas 入门练习
文章字数:2.5k
本文作者:Waterandair
发布时间:2018-02-18, 11:20:47
最后更新:2019-12-28, 14:03:59
原始链接:https://waterandair.github.io/2018-02-18-pandas-intro.html版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。