"二维数组"Dataframe:是一个表格型的数据结构,包含一组有序的列,其列的值类型可以是数值、字符串、布尔值等。

Dataframe中的数据以一个或多个二维块存放,不是列表、字典或一维数组结构。

# 导入pandas
import pandas as pdpd.DataFrame(data=None, index=None, columns=None, dtype=None, copy=None)
  • 参数:

    • index:行标签。如果没有传入索引参数,则默认会自动创建一个从0-N的整数索引。
    • index参数:重新定义index,格式为list,长度必须保持一致
    • columns:列标签。如果没有传入索引参数,则默认会自动创建一个从0-N的整数索引。
    • columns参数:可以重新指定列的顺序,格式为list,如果现有数据中没有该列(比如’d’),则产生NaN值
    • 如果columns重新指定时候,列的数量可以少于原数据

DataFrame是一个类似于二维数组或表格(如excel)的对象,既有行索引,又有列索引

  • 行索引,表明不同行,横向索引,叫index,0轴,axis=0
  • 列索引,表名不同列,纵向索引,叫columns,1轴,axis=1

一、由“数组/list”组成的字典

创建方法:pandas.Dataframe()

  • 由数组/list组成的字典 创建Dataframe,columns为字典key,index为默认数字标签
  • 字典的值的长度必须保持一致!
import numpy as np
import pandas as pd# Dataframe 创建方法一:由数组/list组成的字典
# 创建方法:pandas.Dataframe()# 由数组/list组成的字典 创建Dataframe,columns为字典key,index为默认数字标签
# 字典的值的长度必须保持一致!
data1 = {'a': [1, 2, 3],'b': [3, 4, 5],'c': [5, 6, 7]}print("data1 = {0}----type(data1) = {1}".format(data1, type(data1)))
print("-" * 50)
df1 = pd.DataFrame(data1)
print("df1 = \n{0} \ntype(df1) = {1}".format(df1, type(df1)))
print("-" * 50)# columns参数:可以重新指定列的顺序,格式为list,如果现有数据中没有该列(比如'd'),则产生NaN值
# 如果columns重新指定时候,列的数量可以少于原数据
df1 = pd.DataFrame(data1, columns=['b', 'c', 'a', 'd'])
print("df1 = \n{0} \ntype(df1) = {1}".format(df1, type(df1)))
print("-" * 50)
df1 = pd.DataFrame(data1, columns=['b', 'c'])
print("df1 = \n{0} \ntype(df1) = {1}".format(df1, type(df1)))
print("-" * 200)data2 = {'one': np.random.rand(3),'two': np.random.rand(3)}  # 这里如果尝试  'two':np.random.rand(4) 会怎么样? 会报错:【ValueError: arrays must all be same length】print("data2 = {0}----type(data2) = {1}".format(data2, type(data2)))
print("-" * 50)
df2 = pd.DataFrame(data2)
print("df2 = \n{0} \ntype(df2) = {1}".format(df2, type(df2)))
print("-" * 50)# index参数:重新定义index,格式为list,长度必须保持一致
df2 = pd.DataFrame(data2, index=['f1', 'f2', 'f3'])  # 这里如果尝试  index = ['f1','f2','f3','f4'] 会怎么样?会报错:【ValueError: Shape of passed values is (3, 2), indices imply (4, 2)】
print("df2 = \n{0} \ntype(df2) = {1}".format(df2, type(df2)))

打印结果:

data1 = {'a': [1, 2, 3], 'b': [3, 4, 5], 'c': [5, 6, 7]}----type(data1) = <class 'dict'>
--------------------------------------------------
df1 = a  b  c
0  1  3  5
1  2  4  6
2  3  5  7
type(df1) = <class 'pandas.core.frame.DataFrame'>
--------------------------------------------------
df1 = b  c  a    d
0  3  5  1  NaN
1  4  6  2  NaN
2  5  7  3  NaN
type(df1) = <class 'pandas.core.frame.DataFrame'>
--------------------------------------------------
df1 = b  c
0  3  5
1  4  6
2  5  7
type(df1) = <class 'pandas.core.frame.DataFrame'>
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
data2 = {'one': array([0.74944895, 0.2239778 , 0.06525004]), 'two': array([0.80358123, 0.04858883, 0.05254801])}----type(data2) = <class 'dict'>
--------------------------------------------------
df2 = one       two
0  0.749449  0.803581
1  0.223978  0.048589
2  0.065250  0.052548
type(df2) = <class 'pandas.core.frame.DataFrame'>
--------------------------------------------------
df2 = one       two
f1  0.749449  0.803581
f2  0.223978  0.048589
f3  0.065250  0.052548
type(df2) = <class 'pandas.core.frame.DataFrame'>Process finished with exit code 0

二、由Series组成的字典

Dataframe 创建方法二:由Series组成的字典

  • 由Seris组成的字典 创建Dataframe,columns为字典key,index为Series的标签(如果Series没有指定标签,则是默认数字标签)
  • Series可以长度不一样,生成的Dataframe会出现NaN值
import numpy as np
import pandas as pd# Dataframe 创建方法二:由Series组成的字典data1 = {'one': pd.Series(np.random.rand(2)),'two': pd.Series(np.random.rand(3))}  # 没有设置index的Seriesprint("data1 = \n{0}\ntype(data1) = {1}".format(data1, type(data1)))
print("-" * 50)
# 由Seris组成的字典 创建Dataframe,columns为字典key,index为Series的标签(如果Series没有指定标签,则是默认数字标签)
# Series可以长度不一样,生成的Dataframe会出现NaN值
df1 = pd.DataFrame(data1)
print("df1 = \n{0} \ntype(df1) = {1}".format(df1, type(df1)))
print("-" * 200)data2 = {'one': pd.Series(np.random.rand(2), index=['a', 'b']),'two': pd.Series(np.random.rand(3), index=['a', 'b', 'c'])}  # 设置了index的Seriesprint("data2 = \n{0}\ntype(data2) = {1}".format(data2, type(data2)))
print("-" * 50)
df2 = pd.DataFrame(data2)
print("df2 = \n{0} \ntype(df2) = {1}".format(df2, type(df2)))

打印结果:

data1 =
{'one': 0    0.769247
1    0.982215
dtype: float64, 'two': 0    0.191847
1    0.473236
2    0.172925
dtype: float64}
type(data1) = <class 'dict'>
--------------------------------------------------
df1 = one       two
0  0.769247  0.191847
1  0.982215  0.473236
2       NaN  0.172925
type(df1) = <class 'pandas.core.frame.DataFrame'>
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
data2 =
{'one': a    0.835023
b    0.285224
dtype: float64, 'two': a    0.436375
b    0.149480
c    0.364252
dtype: float64}
type(data2) = <class 'dict'>
--------------------------------------------------
df2 = one       two
a  0.835023  0.436375
b  0.285224  0.149480
c       NaN  0.364252
type(df2) = <class 'pandas.core.frame.DataFrame'>Process finished with exit code 0

三、通过二维数组直接创建

Dataframe 创建方法三:通过二维数组直接创建

  • 通过二维数组直接创建Dataframe,得到一样形状的结果数据,如果不指定index和columns,两者均返回默认数字格式
  • index和colunms指定长度与原数组保持一致
import numpy as np
import pandas as pd# Dataframe 创建方法三:通过二维数组直接创建ar = np.random.rand(9).reshape(3,3)
print("ar = \n{0}\ntype(ar) = {1}".format(ar, type(ar)))
print("-" * 200)
# 通过二维数组直接创建Dataframe,得到一样形状的结果数据,如果不指定index和columns,两者均返回默认数字格式
# index和colunms指定长度与原数组保持一致
df1 = pd.DataFrame(ar)
df2 = pd.DataFrame(ar, index = ['a', 'b', 'c'], columns = ['one','two','three'])  # 可以尝试一下index或columns长度不等于已有数组的情况
print("df1 = \n{0} \ntype(df1) = {1}".format(df1, type(df1)))
print("-" * 50)
print("df2 = \n{0} \ntype(df2) = {1}".format(df2, type(df2)))

四、由字典组成的列表

Dataframe 创建方法四:由字典组成的列表

  • 由字典组成的列表创建Dataframe,columns为字典的key,index不做指定则为默认数组标签
  • colunms和index参数分别重新指定相应列及行标签
import numpy as np
import pandas as pd# Dataframe 创建方法四:由字典组成的列表data = [{'one': 1, 'two': 2}, {'one': 5, 'two': 10, 'three': 20}]
print("data = \n{0}\ntype(data) = {1}".format(data, type(data)))
print("-" * 200)# 由字典组成的列表创建Dataframe,columns为字典的key,index不做指定则为默认数组标签
# colunms和index参数分别重新指定相应列及行标签
df1 = pd.DataFrame(data)
df2 = pd.DataFrame(data, index = ['a','b'])
df3 = pd.DataFrame(data, columns = ['one','two'])
print("df1 = \n{0} \ntype(df1) = {1}".format(df1, type(df1)))
print("-" * 50)
print("df2 = \n{0} \ntype(df2) = {1}".format(df2, type(df2)))
print("-" * 50)
print("df3 = \n{0} \ntype(df3) = {1}".format(df3, type(df3)))

打印结果:

data =
[{'one': 1, 'two': 2}, {'one': 5, 'two': 10, 'three': 20}]
type(data) = <class 'list'>
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
df1 = one  two  three
0    1    2    NaN
1    5   10   20.0
type(df1) = <class 'pandas.core.frame.DataFrame'>
--------------------------------------------------
df2 = one  two  three
a    1    2    NaN
b    5   10   20.0
type(df2) = <class 'pandas.core.frame.DataFrame'>
--------------------------------------------------
df3 = one  two
0    1    2
1    5   10
type(df3) = <class 'pandas.core.frame.DataFrame'>Process finished with exit code 0

五、由字典组成的字典

Dataframe 创建方法五:由字典组成的字典

  • 由字典组成的字典创建Dataframe,columns为字典的key,index为子字典的key
  • columns参数可以增加和减少现有列,如出现新的列,值为NaN
  • index在这里和之前不同,并不能改变原有index,如果指向新的标签,值为NaN (非常重要!)
import numpy as np
import pandas as pd# Dataframe 创建方法五:由字典组成的字典data = {'Jack':{'math':90,'english':89,'art':78},'Marry':{'math':82,'english':95,'art':92},'Tom':{'math':78,'english':67}}# 由字典组成的字典创建Dataframe,columns为字典的key,index为子字典的key
# columns参数可以增加和减少现有列,如出现新的列,值为NaN
# index在这里和之前不同,并不能改变原有index,如果指向新的标签,值为NaN (非常重要!)
df1 = pd.DataFrame(data)
df2 = pd.DataFrame(data, columns = ['Jack','Tom','Bob'])
df3 = pd.DataFrame(data, index = ['a','b','c'])
print("df1 = \n{0} \ntype(df1) = {1}".format(df1, type(df1)))
print("-" * 100)
print("df2 = \n{0} \ntype(df2) = {1}".format(df2, type(df2)))
print("-" * 100)
print("df3 = \n{0} \ntype(df3) = {1}".format(df3, type(df3)))

打印结果:

df1 = Jack  Marry   Tom
math       90     82  78.0
english    89     95  67.0
art        78     92   NaN
type(df1) = <class 'pandas.core.frame.DataFrame'>
----------------------------------------------------------------------------------------------------
df2 = Jack   Tom  Bob
math       90  78.0  NaN
english    89  67.0  NaN
art        78   NaN  NaN
type(df2) = <class 'pandas.core.frame.DataFrame'>
----------------------------------------------------------------------------------------------------
df3 = Jack  Marry  Tom
a   NaN    NaN  NaN
b   NaN    NaN  NaN
c   NaN    NaN  NaN
type(df3) = <class 'pandas.core.frame.DataFrame'>Process finished with exit code 0

Pandas-数据结构-DataFrame(一):创建DF【①由数组组成的字典;②由Series组成的字典;③通过二维数组直接创建;④由字典组成的列表;⑤由字典组成的字典】相关推荐

  1. Java编程笔试时输入问题:如何输入固定长度、不定长度的一维数组?如何输入固定长度、不定长度的二维数组?

    Java编程笔试时输入问题: 如何输入固定长度.不定长度的一维数组? 如何输入固定长度.不定长度的二维数组? 如何将数组中的内容直接输出,不要中括号和逗号? 文章目录 ==Java编程笔试时输入问题= ...

  2. c语言:将一个二维数组行和列的元素互换,存到另一个二维数组中。

    将一个二维数组行和列的元素互换,存到另一个二维数组中. 解:程序: #include<stdio.h> int main() { int i, j, a[2][3] = { {1,2,3} ...

  3. 2022-04-07 西安 javaSE(04) 方法可变参数、重载、递归,数组、冒泡排序、二分查找、动态操作,二维数组、jvm内存区域划分

    方法 1.方法传递参数 形参是基本类型: 1.参数传递的内容是该基本类型的数据值.   2.对形式参数的改变不会影响实际参数的数据值 形参是引用类型:     1.参数传递的是地址值     2.对形 ...

  4. python二维数组的行和列_python 定义N行2列二维数组与赋值

    python中怎么用花括号定义一个5行4列的数组花括号是字典,不是数组. python:定义函数,输入一个m维数组X和一个整数n,输# Python3.6import numpy as npwhile ...

  5. 数组传参中形参的秘密,以及数组名当作函数实际参数的特点,以及二维数组,以及外部变量和全局变量

    1.数组传参中形参的秘密 第三行:形参中不存在数组的概念,即便是中括号约定了数组的大小,也无效. 第二十行:传递的是一个地址,是数组的首地址. 数组名代表了整个数组的首地址. 第二十一行:第一个元素的 ...

  6. linux c中动态申请二维数组,Linux C 编程详解第五篇:二维数组

    二维数组 : 存储类型 数据类型 数组名[行数][列数] 列数不能够省略 , 行数可以省略 数组元素的引用 : 数组名[行标][列标] 练习 : 1.找出二维数组中的最大值, 如果有多个最大值, 找出 ...

  7. 怎么输出一个二维数组_LeetCode54与59,一个口诀教会你旋转二维数组

    Halo, 好久不见各位小伙伴,这几天工作是在是太忙了,忙到都没有足够的时间去继续写算法题目,那么今天一次性带来两道比较类似的题目,在LeetCode中属于中等难度的题目.但其实只要你掌握其中的要点, ...

  8. 二维动态数组空间分配 c语言,科学网—C语言中动态二维数组的使用和分配 - 王一哲的博文...

    好多年不用C语言了,最后一次使用还是读研的时候写矩量法的时候了,看见VS的界面总能想起当年读书的时候的各种错误,往事随风.本程序应人之约,首先得到一个随机的矩阵,之后通过将矩阵分解为几个小矩阵统计小矩 ...

  9. python求二维数组的鞍点_C语言程序,找出一个二维数组的鞍点。

    什么是鞍点????? 鞍点就是在一个二维数组中,某一个数在该行中最大,然而其在该列中又是最小的数,这样的数称为鞍点. 昨天突然在书上看到这样的一道题,就自己尝试着写了一个找出一个二维数组中的鞍点. 好 ...

  10. python定义二维数组_二维数组的定义、初始化和输出,C语言二维数组详解

    本节学习二维数组.二维数组与一维数组相似,但是用法上要比一维数组复杂一点.后面的编程中,二维数组用得很少,因为二维数组的本质就是一维数组,只不过形式上是二维的.能用二维数组解决的问题用一维数组也能解决 ...

最新文章

  1. 计算机视觉方向简介 | 阵列相机立体全景拼接
  2. python写一个游戏多少代码-Python项目实战之猜数字游戏(含实现代码)
  3. Redis:一致性Hash算法
  4. A Complete List of .NET Open Source Developer Projects
  5. mysql 导入CSV数据 [转]
  6. c语言再大文件内搜索,C语言中大型磁盘文件的二进制搜索
  7. 那些年,我在游戏开发中改过的bug:靠不住的OS和SDK
  8. 【Java多线程】高级主题:定时调度、quartz、指令重排、volatile、ThreadLocal
  9. Typora里字体如何变红
  10. C# WPF 表单更改提示
  11. 打印100-200之间的素数
  12. php mysql备份类_php MYSQL 数据备份类
  13. linux对perl脚本加密,对Perl代码进行编译与加密
  14. JIRA OutOfMemoryErrors
  15. Java的下载与安装简易教程
  16. android微信群视频,10. 搞定微信群聊的神器——录屏软件集合
  17. 2019美赛D题,元胞自动机模拟游客疏散过程
  18. 推荐一个在线视频学习、在线试题练习、在线同步考试开源系统
  19. IntelliJ IDEA 2017完全破解方法
  20. PCB测试流程分析介绍

热门文章

  1. PS教程:如何把照片改成漫画风
  2. 微信公众号支付的那些坑
  3. 5G/NR 如何保证URLLC的“超可靠、低时延”?
  4. hexo(matery)背景、滚动条优化+增加点击跳评论
  5. [财务报销]财务报销系统介绍
  6. java float保留1位小数_float类型数保留一位小数
  7. OA管理系统(源码)---毕设版本
  8. android thumbs.db 错误
  9. react ---- svg(绘图---桑葚图)
  10. 4.定义并实现一个Person类,包含姓名(name)与编号(code)等两个属性,通过构造函数为属性赋值,拥有显示属性值的方法(showInfo)。从Person类派生出一个Student类,拥有数