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 ...
随机推荐
- 解题:ZJOI 2006 书架
题面 学习了如何在维护序列的平衡树上查找某个数:按初始的顺序定个权值,然后每次找那个权值的DFS序即可.具体实现就是不停往上跳,然后是父亲的右儿子就加上父亲的左儿子,剩下的就是继续熟悉无旋树堆 #in ...
- Codeforces Round #417 (Div. 2)A B C E 模拟 枚举 二分 阶梯博弈
A. Sagheer and Crossroads time limit per test 1 second memory limit per test 256 megabytes input sta ...
- [POI2014] KUR-Couriers (主席树)
[POI2014]KUR-Couriers 题目描述 Byteasar works for the BAJ company, which sells computer games. The BAJ c ...
- selectors
一.Selectors模块 它具有根据平台选出最佳的IO多路机制,比如在win的系统上他默认的是select模式而在linux上它默认的epoll,建议使用selectors. 常用共分为三种:sel ...
- No qualifying bean of type [java.lang.String] found for dependency: expected
出现这个问题的原因是因为多写了一个注解但是没有实体类.如: 或者其他注解下没有内容.
- Google Map API使用详解(一)——Google Map开发背景知识
一.谷歌地图主页 谷歌地图对应不同的地区都会有一些专门的主页,首次登陆时会显示这些地区.比如,香港的:http://maps.google.com.hk,台湾的:http://maps.google. ...
- User-Agent大全
一.基础知识篇: Http Header之User-Agent User Agent中文名为用户代理,是Http协议中的一部分,属于头域的组成部分,User Agent也简称UA.它是一个特殊字符串头 ...
- <LC刷题二>回文字符串判断之leetcode125&234
其他刷题记录见博客首页 1,leecode125 验证回文串 原题: 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写. 说明:本题中,我们将空字符串定义为有效的回文串. ...
- cmd 使用gii的命令行用法
1.生成模型 php yii gii/model --ns=common\models --tableName=contract_supplemental --modelClass=ContractS ...
- POJ 3734 Blocks (矩阵快速幂)
题目链接 Description Panda has received an assignment of painting a line of blocks. Since Panda is such ...