Pandas DataFrame构造简析
参考书籍:《利用Python进行数据分析》
DataFrame简介:
DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等)。DataFrame既有行索引也有列索引,它可以被看做由Series组成的字典(共用同一个索引)。跟其他类似的数据结构相比(如R的data.frame),DataFrame中面向行和面向列的操作基本上是平衡的。其实,DataFrame中的数据是以一个或多个二维块存放的(而不是列表、字典或别的一维数据结构)。
导入python库:
import numpy as np
import pandas as pd
DataFrame构造:
1:直接传入一个由等长列表或NumPy数组组成的字典;
dict = {
"key1": value1;
"key2": value2;
"key3": value3;
}
注意:key 会被解析为列数据,value 会被解析为行数据。
>>> data = {
... 'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada'],
... 'year': [2000, 2001, 2002, 2001, 2002],
... 'pop': [1.5, 1.7, 3.6, 2.4, 2.9]
... }
>>> pd.DataFrame(data)
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
主动指定列排序方式:
>>> pd.DataFrame(data, columns=['year', 'state', 'pop'])
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
此处 0-1位自动生成的列索引,当然了也可以主动指定。
>>> pd.DataFrame(data, columns=['year', 'state', 'pop'], index=['one', 'two', 'three', 'four', 'five'])
year state pop
one 2000 Ohio 1.5
two 2001 Ohio 1.7
three 2002 Ohio 3.6
four 2001 Nevada 2.4
five 2002 Nevada 2.9
需要注意的是:将列表或数组赋值给某个列时,其长度必须跟DataFrame的长度相匹配!!否则会报ValueError。
>>> pd.DataFrame(data, columns=['year', 'state', 'pop'], index=['one', 'two', 'three', 'four'])
ValueError: Shape of passed values is (3, 5), indices imply (3, 4)
2:传入一个由嵌套的字典;
它就会被解释为:外层字典的键作为列,内层键则作为行索引。
>>> dict = {
... "key1": {
... "subkey1": 1,
... "subkey2": 2,
... "subkey3": 3,
... },
... "key2": {
... "subkey1": 4,
... "subkey2": 5,
... "subkey3": 6,
... },
... "key3": {
... "subkey1": 7,
... "subkey2": 8,
... "subkey3": 9,
... },
... }
>>> pd.DataFrame(dict)
key1 key2 key3
subkey1 1 4 7
subkey2 2 5 8
subkey3 3 6 9
请务必保证嵌套字典的key的一致性,不然的话,数据会异常,但不会显式的报错,而是显示出NaN,
>>> dict = {
... "key1": {
... "subkey1111111111111111": 1,
... "subkey2": 2,
... "subkey3": 3,
... },
... "key2": {
... "subkey1": 4,
... "subkey2": 5,
... "subkey3": 6,
... },
... "key3": {
... "subkey1": 7,
... "subkey2": 8,
... "subkey3": 9,
... },
... }
>>> pd.DataFrame(dict)
key1 key2 key3
subkey1 NaN 4.0 7.0
subkey1111111111111111 1.0 NaN NaN
subkey2 2.0 5.0 8.0
subkey3 3.0 6.0 9.0
3:传入一个二维nd.array;
>>> s = [[1,2],[3,4]]
>>> np.array(s)
array([[1, 2],
[3, 4]])
>>> pd.DataFrame(np.array(s))
0 1
0 1 2
1 3 4
当然了你也可以主动指定行和列索引(不赘述):
>>> pd.DataFrame(np.array(s),index=['one', 'two'], columns=['year', 'state'])
year state
one 1 2
two 3 4
4:传入其他的数据(初始化方式基本类似);

Pandas DataFrame构造简析的更多相关文章
- pandas Dataframe 构造
- 如何通过Elasticsearch Scroll快速取出数据,构造pandas dataframe — Python多进程实现
首先,python 多线程不能充分利用多核CPU的计算资源(只能共用一个CPU),所以得用多进程.笔者从3.7亿数据的索引,取200多万的数据,从取数据到构造pandas dataframe总共大概用 ...
- SIFT特征原理简析(HELU版)
SIFT(Scale-Invariant Feature Transform)是一种具有尺度不变性和光照不变性的特征描述子,也同时是一套特征提取的理论,首次由D. G. Lowe于2004年以< ...
- DiskGenius注册算法简析
初次接触DiskGenius已经成为遥远的记忆,那个时候还只有DOS版本.后来到Windows版,用它来处理过几个找回丢失分区的案例,方便实用.到现在它的功能越来越强大,成为喜好启动技术和桌面支持人员 ...
- Android -- 多媒体播放之MediaPlayer使用内部实现简析
Android -- MediaPlayer内部实现简析 在之前的博客中,已经介绍了使用MediaPlayer时要注意的内容.如今,这里就通过一个MediaPlayer代码实例,来进一步分析Media ...
- Linux网络性能优化方法简析
Linux网络性能优化方法简析 2010-12-20 10:56 赵军 IBMDW 字号:T | T 性能问题永远是永恒的主题之一,而Linux在网络性能方面的优势则显而易见,这篇文章是对于Linux ...
- React Native startReactApplication 方法简析
在 React Native 启动流程简析 这篇文章里,我们梳理了 RN 的启动流程,最后的 startReactApplication 由于相对复杂且涉及到最终执行前端 js 的流程,我们单独将其提 ...
- CGLib 简析
背景 JDK 动态代理存在的一些问题: 调用效率低 JDK 通过反射实现动态代理调用,这意味着低下的调用效率: 每次调用 Method.invoke() 都会检查方法的可见性.校验参数是否匹配,过程涉 ...
- 简析.NET Core 以及与 .NET Framework的关系
简析.NET Core 以及与 .NET Framework的关系 一 .NET 的 Framework 们 二 .NET Core的到来 1. Runtime 2. Unified BCL 3. W ...
随机推荐
- CentOS 7.0 作为服务器注意事项
配置防火墙,开启80端口.3306端口: CentOS 7.0默认使用的是firewall作为防火墙 关闭firewall: systemctl stop firewalld.service #停止 ...
- 图像处理之直方图均衡化及C源码实现
1 直方图均衡化(Histogram Equalization)简介 图像对比度增强的方法可以分成两类:一类是直接对比度增强方法;另一类是间接对比度增强方法.直方图拉伸和直方图均衡化是两种最常见的间接 ...
- centos7安装python-pip(转)
好久没更新博客了............. 来一发................ 在使用centos7的软件包管理程序yum安装python-pip的时候会报一下错误: No package pyt ...
- 【OpenCV】特征检测器 FeatureDetector
<SIFT原理与源码分析>系列文章索引:http://www.cnblogs.com/tianyalu/p/5467813.html OpenCV提供FeatureDetector实现特征 ...
- STL源码分析-rbtree
http://note.youdao.com/noteshare?id=4f8d16e565478b4e98bf2e56ce98a28e
- debian自动挂载ntfs硬盘
首先下载安装ntfs-3g apt-get install ntfs-3g 然后查看分区信息 fdisk -l Device Boot Start End Blocks Id System /dev/ ...
- Codeforces 797 F Mice and Holes
http://codeforces.com/problemset/problem/797/F F. Mice and Holes time limit per test 1.5 ...
- (3.1)用ictclas4j进行中文分词,并去除停用词
酒店评论情感分析系统——用ictclas4j进行中文分词,并去除停用词 ictclas4j是中科院计算所开发的中文分词工具ICTCLAS的Java版本,因其分词准确率较高,而备受青睐. 注:ictcl ...
- js关闭当前页面跳转新页面
页面代码: <p class="info"><span style="font-weight: bold">所属项目:</span ...
- 51Nod 1256 扩展欧几里得求乘法逆元
给出2个数M和N(M < N),且M与N互质,找出一个数K满足0 < K < N且K * M % N = 1,如果有多个满足条件的,输出最小的. Input 输入2个数M, N中间用 ...