Pandas数据处理一

Pandas 是在NumPy 基础上建立的新程序库, 提供了一种高效的 DataFrame 数据结构。 DataFrame 本质上是一种带行标签和列标签、 支持相同类型数据和缺失值的多维数组。 Pandas 不仅为带各种标签的数据提供了便利的存储界面, 还实现了许多强大的操作, 这些操作对数据库框架和电子表格程序的用户来说非常熟悉。 建立在NumPy 数组结构上的 Pandas, 尤其是它的 Series 和 DataFrame 对象, 为数据科学家们处理那些消耗大量时间的“数据清理”(data munging) 任务提供了捷径。
3.2.1 Pandas的Series对象
Pandas 的 Series 对象是一个带索引数据构成的一维数组。 可以用一个数组创建 Series 对象, 如下所示

1 In[2]: data = pd.Series([0.25, 0.5, 0.75, 1.0])
2 data
3 Out[2]: 0 0.25
4 1 0.50
5 2 0.75
6 3 1.00
7 dtype: float64

从上面的结果中, 你会发现 Series 对象将一组数据和一组索引绑定在一起, 我们可以通过 values 属性和index 属性获取数据。 values 属性返回的结果与 NumPy 数组类似:

和 NumPy 数组一样, 数据可以通过 Python 的中括号索引标签获取:

1 In[5]: data[1]
2 Out[5]: 0.5
3 In[6]: data[1:3]
4 Out[6]: 1 0.50
5 2 0.75
6 dtype: float64

3.2.2 Pandas的DataFrame对象
Pandas 的另一个基础数据结构是 DataFrame。 和上一节介绍的 Series 对象一样, DataFrame 既可以作为
一个通用型 NumPy 数组, 也可以看作特殊的 Python 字典。 下面来分别看看。

DataFrame 也有一个 index 属性可以获取索引标签:
DataFrame 还有一个 columns 属性, 是存放列标签的 Index 对象:

03. 创建DataFrame对象
Pandas 的 DataFrame 对象可以通过许多方式创建, 这里举几个常用的例子。

(1) 通过单个 Series 对象创建。 DataFrame 是一组 Series 对象的集合, 可以用单个 Series 创建一
个单列的 DataFrame:

1 In[23]: pd.DataFrame(population, columns=[‘population‘])
2 Out[23]: population
3 California 38332521
4 Florida 19552860
5 Illinois 12882135
6 New York 19651127
7 Texas 26448193

(2) 通过字典列表创建。 任何元素是字典的列表都可以变成 DataFrame。 用一个简单的列表综合来创建
一些数据:

1 In[24]: data = [{‘a‘: i, ‘b‘: 2 * i}
2 for i in range(3)]
3 pd.DataFrame(data)
4 Out[24]: a b
5 0 0 0
6 1 1 2
7 2 2 4

(3) 通过 Series 对象字典创建。 就像之前见过的那样, DataFrame 也可以用一个由 Series 对象构成
的字典创建:

1 In[26]: pd.DataFrame({‘population‘: population,
2 ‘area‘: area})
3 Out[26]: area population
4 California 423967 38332521
5 Florida 170312 19552860
6 Illinois 149995 12882135

(4) 通过 NumPy 二维数组创建。 假如有一个二维数组, 就可以创建一个可以指定行列索引值的
DataFrame。 如果不指定行列索引值, 那么行列默认都是整数索引值:

1 In[27]: pd.DataFrame(np.random.rand(3, 2),
2 columns=[‘foo‘, ‘bar‘],
3 index=[‘a‘, ‘b‘, ‘c‘])
4 Out[27]: foo bar
5 a 0.865257 0.213169
6 b 0.442759 0.108267
7 c 0.047110 0.905718

(5) 通过 NumPy 结构化数组创建。 2.9 节曾介绍过结构化数组。 由于 Pandas 的 DataFrame 与结构化数
组十分相似, 因此可以通过结构化数组创建 DataFrame:

1 In[28]: A = np.zeros(3, dtype=[(‘A‘, ‘i8‘), (‘B‘, ‘f8‘)])
2 A
3 Out[28]: array([(0, 0.0), (0, 0.0), (0, 0.0)],
4 dtype=[(‘A‘, ‘<i8‘), (‘B‘, ‘<f8‘)])
5 In[29]: pd.DataFrame(A)
6 Out[29]: A B
7 0 0 0.0
8 1 0 0.0
9 2 0 0.0

Index 对象与 NumPy 数组之间的不同在于, Index 对象的索引是不可变的, 也就是说不能通过通常的方式进行调整:

将Series看作字典
和字典一样, Series 对象提供了键值对的映射:

将Series看作一维数组
Series 不仅有着和字典一样的接口, 而且还具备和 NumPy 数组一样的数组数据选择功能, 包括索引、 掩码、 花哨的索引等操作, 具体示例如下所示:

03. 索引器: loc、 iloc和ix
这些切片和取值的习惯用法经常会造成混乱。 例如, 如果你的 Series 是显式整数索引, 那么data[1] 这样的取值操作会使用显式索引, 而 data[1:3] 这样的切片操作却会使用隐式索引。

由于整数索引很容易造成混淆, 所以 Pandas 提供了一些索引器(indexer) 属性来作为取值的方法。它们不是 Series 对象的函数方法, 而是暴露切片接口的属性。
第一种索引器是 loc 属性, 表示取值和切片都是显式的:

1 In[14]: data.loc[1]
2 Out[14]: ‘a‘
3 In[15]: data.loc[1:3]
4 Out[15]: 1 a
5 3 b
6 dtype: object

第二种是 iloc 属性, 表示取值和切片都是 Python 形式的 隐式索引:

1 In[16]: data.iloc[1]
2 Out[16]: ‘b‘
3 In[17]: data.iloc[1:3]
4 Out[17]: 3 b
5 5 c
6 dtype: object

第三种取值属性是 ix, 它是前两种索引器的混合形式, 在 Series 对象中 ix 等价于标准的 [](Python 列表) 取值方式。 ix 索引器主要用于 DataFrame 对象, 后面将会介绍

Python 代码的设计原则之一是“显式优于隐式”。 使用 loc 和 iloc 可以让代码更容易维护, 可读性更高。 特别是在处理整数索引的对象时, 我强烈推荐使用这两种索引器。 它们既可以让代码阅读和理解起来更容易, 也能避免因误用索引 / 切片而产生的小 bug

表3-1: Python运算符与Pandas方法的映射关系

Python运算符 Pandas方法
+ add()
- sub()、 subtract()
* mul()、 multiply()
/ truediv()、 div()、 divide()
// floordiv()
% mod()
** pow()

01. None: Python对象类型的缺失值
Pandas 可以使用的第一种缺失值标签是 None, 它是一个 Python 单体对象, 经常在代码中表示缺失值。 由于 None 是一个 Python 对象, 所以不能作为任何 NumPy / Pandas 数组类型的缺失值, 只能用于‘object‘ 数组类型(即由 Python 对象构成的数组) :

02. NaN: 数值类型的缺失值另一种缺失值的标签是 NaN(全称 Not a Number, 不是一个数字) , 是一种按照 IEEE 浮点数标准设计、 在任何系统中都兼容的特殊浮点数:

3.5.3 处理缺失值
我们已经知道, Pandas 基本上把 None 和 NaN 看成是可以等价交换的缺失值形式。 为了完成这种交换过程, Pandas 提供了一些方法来发现、 剔除、 替换数据结构中的缺失值, 主要包括以下几种。
isnull()
创建一个布尔类型的掩码标签缺失值。
notnull() 与 isnull() 操作相反
dropna() 返回一个剔除缺失值的数据。
fillna() 返回一个填充了缺失值的数据副本。

原文地址:https://www.cnblogs.com/BaoBobbyZhang/p/12146949.html

时间: 2024-10-06 18:13:42

Pandas数据处理一的相关文章

Pandas 数据处理入门教程合集

基础教程 Pandas 数据处理(三) - Cheat Sheet 中文版 来源,2张图覆盖了几乎所有常用的 Pandas 用法. Pandas_Cheat_Sheet_中文版.pdf 下载 Pandas 数据处理(二) - 筛选数据 选取列,使用方括号 选取行,行标签使用loc,行号使用iloc,ix兼容处理loc与iloc(deprecated) 简单的逻辑判断(<, >, ==, &, |, ~ 等) 自定义函数,loc,apply,lambda Pandas 数据处理(一) -

Python3快速入门(十五)——Pandas数据处理

Python3快速入门(十五)--Pandas数据处理 一.函数应用 1.函数应用简介 如果要将自定义函数或其它库函数应用于Pandas对象,有三种使用方式.pipe()将函数用于表格,apply()将函数用于行或列,applymap()将函数用于元素. 2.表格函数应用 可以通过将函数对象和参数作为pipe函数的参数来执行自定义操作,会对整个DataFrame执行操作. # -*- coding=utf-8 -*- import pandas as pd import numpy as np

Pandas数据处理实战:福布斯全球上市企业排行榜数据整理

手头现在有一份福布斯2016年全球上市企业2000强排行榜的数据,但原始数据并不规范,需要处理后才能进一步使用. 本文通过实例操作来介绍用pandas进行数据整理. 照例先说下我的运行环境,如下: windows 7, 64位 python 3.5 pandas 0.19.2版本 在拿到原始数据后,我们先来看看数据的情况,并思考下我们需要什么样的数据结果. 下面是原始数据: 在本文中,我们需要以下的初步结果,以供以后继续使用. 可以看到,原始数据中,跟企业相关的数据中(“Sales”,“Prof

python数据分析实战-第6章-深入pandas数据处理

第6章 深入pandas:数据处理 117 6.1 数据准备 117 合并 1234567891011 #merge是两个dataframe共同包含的项import numpy as npimport pandas as pdframe1 = pd.DataFrame( {'id':['ball','pencil','pen','mug','ashtray'], 'price': [12.33,11.44,33.21,13.23,33.62]})print(frame1)print()frame

pandas数据处理

1.删除重复元素 使用duplicated()函数检测重复的行,返回元素为布尔类型的Series对象,每个元素对应一行,如果该行不是第一次出现,则元素为True. - keep参数:指定保留哪一重复的行数据 - True 重复的行 创建具有重复元素行的DataFrame from pandas import Series,DataFrame import numpy as np import pandas as pd #创建一个df np.random.seed(10) df = DataFra

python pandas 数据处理

from pandas import Series,DataFrame import pandas as pd import numpy as np python中pandas.DataFrame对行与列求和及添加新行与列示例 df = DataFrame(np.random.randn(4, 5), columns=['A', 'B', 'C', 'D', 'E']) df['Col_sum'] = df.apply(lambda x: x.sum(), axis=1) df.loc['Row

pandas 数据处理

1. 查看数值数据的整体分布情况 datafram.describe() 输出: agecount 1463.000000mean 22.948052std 8.385384min 13.00000025% 17.00000050% 20.00000075% 27.000000max 64.000000 其中的25%,50%这些是百分位数. 百分位数的定义为: 统计学术语,如果将一组数据从小到大排序,并计算相应的累计百分位,则某一百分位所对应数据的值就称为这一百分位的百分位数.可表示为:一组n个

Pandas数据处理+Matplotlib绘图案例

利用pandas对数据进行预处理然后再使用matplotlib对处理后的数据进行数据可视化是数据分析中常用的方法. 第一组例子(星巴克咖啡店) 假如我们现在有这样一组数据:星巴克在全球的咖啡店信息,如下图所示.数据来源:starbucks_store_locations. 店铺总数排名前10的国家 # coding=utf-8 # 统计店铺数排名前10的国家 import pandas as pd from matplotlib import pyplot as plt from matplot

Pandas数据处理二

3.7 合并数据集: Concat与Append操作将不同的数据源进行合并是数据科学中最有趣的事情之一, 这既包括将两个不同的数据集非常简单地拼接在一起, 也包括用数据库那样的连接(join) 与合并(merge) 操作处理有重叠字段的数据集. Series 与DataFrame 都具备这类操作, Pandas 的函数与方法让数据合并变得快速简单. 先来用 pd.concat 函数演示一个 Series 与 DataFrame 的简单合并操作. 之后, 我们将介绍 Pandas 中更复杂的 me