目录
- Ⅰ Python基础
- 1. Python入门
- 2. 流程控制
- 3. Python函数使用
- 4. Python中的列表
- 5. 字典
- 6. Python中的字符串
- 7. 异常处理
- Ⅱ Python 进阶
- Ⅲ Python常用类库
- 1. 正则表达式
- 2. 文件读写
- 3. 文件操作
- 4. CSV与JSON
- 5. 日期与时间
- 6. 文本文件
- Ⅳ Python日常工具
- 1. 用 Python 处理电子表格
- 2. DOCX 文档解析与处理
- 3. 用Python进行图像处理
- 4. 使用Python处理PDF文档
- 5. Web信息解析与处理
- 6. Web信息生成与发布
- 7. 自动化Email处理
- 8. 杂项
- Ⅴ 专题
- 1. Pillow图像处理
- 2. OpenCV处理
- 3. 数据库自动化报表处理:使用SQLite
- 4. Python和Web
- 5. Web信息处理
- 6. Web模板引擎
- 7. XML 处理
- Ⅵ 图像处理:使用scikit-image
- 1. skimage数字图像处理基础
- 2. skimage数字图像处理中级
- 3. skimage数字图像处理高级
- Ⅶ 科学计算
- 1. NumPy数值计算
- 2. SciPy科学类库
- 3. SymPy符号运算
- 4. Matplotlib绘图
- 5. Pandas 第一部分
- 6. Pandas 第二部分
- 6.1. Pandas排序
- 6.2. Pandas字符串和文本数据
- lower()函数示例
- upper()函数示例
- len()函数示例
- strip()函数示例
- split(pattern)函数示例
- cat(sep=pattern)函数示例
- get_dummies()函数示例
- contains()函数示例
- replace(a,b)函数示例
- repeat(value)函数示例
- count(pattern)函数示例
- startswith(pattern)函数示例
- endswith(pattern)函数示例
- find(pattern)函数示例
- findall(pattern)函数示例
- swapcase()函数示例
- islower()函数示例
- isupper()函数示例
- isnumeric()函数示例
- 6.3. Pandas选项和自定义
- 6.4. Pandas索引和选择数据
- 6.5. Pandas统计函数
- 6.6. Pandas窗口函数
- 6.7. Pandas聚合
- 6.8. Pandas缺失数据
- 6.9. Pandas分组(GroupBy)
- 6.10. Pandas合并/连接
- 6.11. Pandas级联
- 7. Pandas 第三部分
- Ⅷ 自然语言与知识图谱
上一个主题
下一个主题
>>> from env_helper import info; info()
页面更新时间: 2020-03-08 18:01:19
操作系统/OS: Linux-4.19.0-8-amd64-x86_64-with-debian-10.3 ;Python: 3.7.3
7.6. Pandas稀疏数据¶
当任何匹配特定值的数据(NaN/缺失值,尽管可以选择任何值)被省略时,稀疏对象被“压缩”。 一个特殊的SparseIndex对象跟踪数据被“稀疏”的地方。 这将在一个例子中更有意义。 所有的标准Pandas数据结构都应用了to_sparse方法 -
>>> import pandas as pd
>>> import numpy as np
>>>
>>> ts = pd.Series(np.random.randn(10))
>>> ts[2:-2] = np.nan
>>> sts = ts.to_sparse()
>>> print (sts)
0 0.521074
1 0.601970
2 NaN
3 NaN
4 NaN
5 NaN
6 NaN
7 NaN
8 0.078770
9 -0.320702
dtype: float64
BlockIndex
Block locations: array([0, 8], dtype=int32)
Block lengths: array([2, 2], dtype=int32)
为了内存效率的原因,所以需要稀疏对象的存在。
现在假设有一个大的NA DataFrame并执行下面的代码 -
>>> import pandas as pd
>>> import numpy as np
>>>
>>> df = pd.DataFrame(np.random.randn(10000, 4))
>>> df.ix[:9998] = np.nan
>>> sdf = df.to_sparse()
>>>
>>> print (sdf.density)
0.0001
/usr/lib/python3/dist-packages/ipykernel_launcher.py:5: DeprecationWarning:
.ix is deprecated. Please use
.loc for label based indexing or
.iloc for positional indexing
See the documentation here:
http://pandas.pydata.org/pandas-docs/stable/indexing.html#ix-indexer-is-deprecated
"""
通过调用to_dense可以将任何稀疏对象转换回标准密集形式 -
>>> import pandas as pd
>>> import numpy as np
>>> ts = pd.Series(np.random.randn(10))
>>> ts[2:-2] = np.nan
>>> sts = ts.to_sparse()
>>> print (sts.to_dense())
0 0.610515
1 -0.845538
2 NaN
3 NaN
4 NaN
5 NaN
6 NaN
7 NaN
8 -0.489403
9 -0.750825
dtype: float64
稀疏Dtypes¶
稀疏数据应该具有与其密集表示相同的dtype。 目前,支持float64,int64和booldtypes。 取决于原始的dtype,fill_value默认值的更改 -
float64 − np.nan
int64 − 0
bool − False
执行下面的代码来理解相同的内容 -
>>> import pandas as pd
>>> import numpy as np
>>>
>>> s = pd.Series([1, np.nan, np.nan])
>>> print (s)
>>> print ("=============================")
>>> s.to_sparse()
>>> print (s)
0 1.0
1 NaN
2 NaN
dtype: float64
=============================
0 1.0
1 NaN
2 NaN
dtype: float64