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:传入其他的数据(初始化方式基本类似);

  

原文地址:https://www.cnblogs.com/JansXin/p/8110472.html

时间: 2024-10-29 03:29:45

Pandas DataFrame构造简析的相关文章

DataFrame.groupby()简析

groupby分组函数: 返回值:返回重构格式的DataFrame,特别注意,groupby里面的字段内的数据重构后都会变成索引 groupby(),一般和sun()一起使用,如下例: from pandas import Series,DataFrame a=[['Li','男','PE',98.],['Li','男','MATH',60.],['liu','男','MATH',60.],['yu','男','PE',100.]] af=DataFrame(a,columns=['name',

Linux网络性能优化方法简析

Linux网络性能优化方法简析 2010-12-20 10:56 赵军 IBMDW 字号:T | T 性能问题永远是永恒的主题之一,而Linux在网络性能方面的优势则显而易见,这篇文章是对于Linux内核中提升网络性能的一些优化方法的简析,以让我们去后台看看魔术师表演用的盒子,同时也看看内核极客们是怎样灵活的,渐进的去解决这些实际的问题. AD:2014WOT全球软件技术峰会北京站 课程视频发布 对于网络的行为,可以简单划分为 3 条路径:1) 发送路径,2) 转发路径,3) 接收路径,而网络性

仿冒公检法手机诈骗简析

1 电话诈骗中的半壁江山: 仿冒公检法诈骗 电信诈骗,让人不胜其害.也让人不堪其扰,在受害者中有人倾家荡产,也有人家破人亡.2015年,全国电信诈骗发案59.9万起,被骗走222亿元,这两个数字触目惊心. 而根据腾讯移动安全/反诈骗实验室的数据显示电话诈骗损失中高达57.39%案件都是仿冒公检法诈骗,可以说仿冒公检法类是目前电话诈骗中最大的毒瘤. 2 仿冒公检法诈骗案情回顾 这个案例中诈骗骗子的诈骗套路分为以下几个步骤: 第一步:骗取信任. 骗子通过网络购买的受害者个人信息,例如身份证号.住址等

Android -- MediaPlayer内部实现简析

Android -- MediaPlayer内部实现简析 在之前的博客中,已经介绍了使用MediaPlayer时要注意的内容.现在,这里就通过一个MediaPlayer代码实例,来进一步分析MediaPlayer内部是如何运作.实现的:当然这里的分析只截止到底层调用播放器之前,因为播放器这块实在是没搞懂. 我们使用的例子来源于之前MediaPlayer Playback译文中的官方实例: String url = "http://........"; // your URL here

SIFT特征原理简析(HELU版)

SIFT(Scale-Invariant Feature Transform)是一种具有尺度不变性和光照不变性的特征描述子,也同时是一套特征提取的理论,首次由D. G. Lowe于2004年以<Distinctive Image Features from Scale-Invariant Keypoints[J]>发表于IJCV中.开源算法库OpenCV中进行了实现.扩展和使用. 本文主要依据原始论文和网络上相关专业分析,对SIFT特征提取的算法流程进行简单分析.由于涉及到的知识概念较多,本人

web应用构架LAMT及tomcat负载简析

Httpd    (mod_jk.so) workers.properties文件 uriworkermap.properties文件 <--AJP1.3--> Tomcat  --> jdk 大致流程:apache服务器通过mod_jk.so 模块处理jsp文件的动态请求.通过tomcat worker等待执行servlet/JSP的tomcat实例.使用 AJP1.3协议与tomcat通信.tomcat有借助jdk解析. 负载就是 多台tomcat.共同解析apache发送的jsp请

CentOS的网络配置简析

我们在进行对CentOS的网络配置时,一般会从IP地址(IPADDR).子网掩码(NETMASK).网关(Gateway).主机名(HOSTNAME).DNS服务器等方面入手.而在CentOS中,又有着不同的命令或配置文件可以完成这些配置操作,接下来,我们将从ifcfg系命令,iproute2系命令以及配置文件3个方面来简析网络配置的方法. 一.ifcfg系命令 ifcfg系命令包括ifconfig,route,netstat和hostname. 1.ifconfig命令 用来配置一个网络接口.

JDK源码简析--java.lang包中的基础类库

题记 JDK,Java Development Kit. 我们必须先认识到,JDK只是,仅仅是一套Java基础类库而已,是Sun公司开发的基础类库,仅此而已,JDK本身和我们自行书写总结的类库,从技术含量来说,还是在一个层级上,它们都是需要被编译成字节码,在JRE中运行的,JDK编译后的结果就是jre/lib下得rt.jar,我们学习使用它的目的是加深对Java的理解,提高我们的Java编码水平. 本系列所有文章基于的JDK版本都是1.7.16. 本节内容 在本节中,简析java.lang包所包

pandas.DataFrame.plot

pandas.DataFrame.plot¶ DataFrame.plot(x=None, y=None, kind='line', ax=None, subplots=False, sharex=None, sharey=False, layout=None, figsize=None, use_index=True, title=None, grid=None, legend=True, style=None, logx=False, logy=False, loglog=False, xt