DataFrame简介

dataframe表示的是矩阵的数据表,每一列可以是不同的值类型,可以看作一个共享相同索引的Series字典。在dataframe中,数据被存储为一个以上的二维块

1.利用等长度列表或numpy数组的字典来形成dataframe

import pandas as pd
import numpy as np
data = {'state' : ['ohio', 'ohio', 'ohio', 'Nevada', 'Nevada', 'Nevada'],'year' : [2000, 2001, 2002, 2001, 2002, 2003],'pop' : [1.5, 1.7, 3.6, 2.4, 2.9, 3.2]}
frame = pd.DataFrame(data)
frame
state year pop
0 ohio 2000 1.5
1 ohio 2001 1.7
2 ohio 2002 3.6
3 Nevada 2001 2.4
4 Nevada 2002 2.9
5 Nevada 2003 3.2

2.对于大型DataFrame,head()方法将会只选出头部的五行

frame.head()
state year pop
0 ohio 2000 1.5
1 ohio 2001 1.7
2 ohio 2002 3.6
3 Nevada 2001 2.4
4 Nevada 2002 2.9

3.如果指定了列的顺序,DataFrame的列将会按照指定顺序排列

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
5 2003 Nevada 3.2
# 如果传入的列不再字典中,将会在结果中出现缺失值
frame2 = pd.DataFrame(data, columns = ['year', 'state', 'pop', 'debt'], index = ['one', 'two', 'three', 'four', 'five', 'six'])
frame2
year state pop debt
one 2000 ohio 1.5 NaN
two 2001 ohio 1.7 NaN
three 2002 ohio 3.6 NaN
four 2001 Nevada 2.4 NaN
five 2002 Nevada 2.9 NaN
six 2003 Nevada 3.2 NaN
frame2.columns
Index(['year', 'state', 'pop', 'debt'], dtype='object')

4.DataFrame中的一列,可以按照字典型标记或属性那样检索为Series

frame2['state']
one        ohio
two        ohio
three      ohio
four     Nevada
five     Nevada
six      Nevada
Name: state, dtype: object
frame2.year
one      2000
two      2001
three    2002
four     2001
five     2002
six      2003
Name: year, dtype: int64

5.通过位置或属性loc进行行的选取

frame2.loc['three']
year     2002
state    ohio
pop       3.6
debt      NaN
Name: three, dtype: object

6.修改列的值

frame2['debt'] = 16.5
frame2
year state pop debt
one 2000 ohio 1.5 16.5
two 2001 ohio 1.7 16.5
three 2002 ohio 3.6 16.5
four 2001 Nevada 2.4 16.5
five 2002 Nevada 2.9 16.5
six 2003 Nevada 3.2 16.5
frame2['ddebt'] = np.arange(6.)
frame2
year state pop debt ddebt
one 2000 ohio 1.5 16.5 0.0
two 2001 ohio 1.7 16.5 1.0
three 2002 ohio 3.6 16.5 2.0
four 2001 Nevada 2.4 16.5 3.0
five 2002 Nevada 2.9 16.5 4.0
six 2003 Nevada 3.2 16.5 5.0

7.当你将列表或数组赋值给一个列时,值的长度必须和DataFrame的长度相匹配,如果你将Series赋值给一列,Series的索引将会按照DataFrame的索引重新排序,并在孔雀的地方填充空缺值

val = pd.Series([-1.2, -1.5, -1.7], index = ['two', 'four', 'five'])
frame2['debt'] = val
frame2
year state pop debt ddebt
one 2000 ohio 1.5 NaN 0.0
two 2001 ohio 1.7 -1.2 1.0
three 2002 ohio 3.6 NaN 2.0
four 2001 Nevada 2.4 -1.5 3.0
five 2002 Nevada 2.9 -1.7 4.0
six 2003 Nevada 3.2 NaN 5.0

如果被赋值的列并不存在,则会生成一个新的列,del关键字可以删除列

frame2['eastern'] = frame2.state == 'ohio'
frame2
year state pop debt ddebt eastern
one 2000 ohio 1.5 NaN 0.0 True
two 2001 ohio 1.7 -1.2 1.0 True
three 2002 ohio 3.6 NaN 2.0 True
four 2001 Nevada 2.4 -1.5 3.0 False
five 2002 Nevada 2.9 -1.7 4.0 False
six 2003 Nevada 3.2 NaN 5.0 False
del frame2['eastern']
frame2
year state pop debt ddebt
one 2000 ohio 1.5 NaN 0.0
two 2001 ohio 1.7 -1.2 1.0
three 2002 ohio 3.6 NaN 2.0
four 2001 Nevada 2.4 -1.5 3.0
five 2002 Nevada 2.9 -1.7 4.0
six 2003 Nevada 3.2 NaN 5.0

8.字典的嵌套字典

如果嵌套字典被赋值给dataframe,pandas会将字典的键作为列,将内部字典的键作为行索引

pop = {'Nevada':{2001: 2.4, 2002: 2.9}, 'Ohio' : {2000:1.5, 2001:1.7, 2002:3.6}}
frame3 = pd.DataFrame(pop)
frame3
Nevada Ohio
2001 2.4 1.7
2002 2.9 3.6
2000 NaN 1.5
# 显示指明索引的顺序
pd.DataFrame(pop, index = [2001, 2002, 2003])
Nevada Ohio
2001 2.4 1.7
2002 2.9 3.6
2003 NaN NaN

包含Series的字典也可以用于构造DataFrame

pdata = {'Ohio' : frame3['Ohio'][:-1], 'Nevada' : frame3['Nevada'][:2]}
pd.DataFrame(pdata)
Ohio Nevada
2001 1.7 2.4
2002 3.6 2.9

DataFrame的索引和列拥有name属性

frame3.index.name = 'year'
frame3.columns.name = 'state'
frame3
state Nevada Ohio
year
2001 2.4 1.7
2002 2.9 3.6
2000 NaN 1.5

values属性得到dataframe中的值

frame3.values
array([[2.4, 1.7],[2.9, 3.6],[nan, 1.5]])
frame2.values
array([[2000, 'ohio', 1.5, nan, 0.0],[2001, 'ohio', 1.7, -1.2, 1.0],[2002, 'ohio', 3.6, nan, 2.0],[2001, 'Nevada', 2.4, -1.5, 3.0],[2002, 'Nevada', 2.9, -1.7, 4.0],[2003, 'Nevada', 3.2, nan, 5.0]], dtype=object)

python——pandas库之DataFrame数据结构基础相关推荐

  1. python——pandas库之Series数据结构基础

    文章目录 pandas之Series 1.Series简介 2.Series属性 3.数学运算 4.缺失值检测 6.Series自动对齐索引 7.name属性 pandas之Series 1.Seri ...

  2. python dataframe 列_python pandas库中DataFrame对行和列的操作实例讲解

    用pandas中的DataFrame时选取行或列: import numpy as np import pandas as pd from pandas import Sereis, DataFram ...

  3. Python pandas库|任凭弱水三千,我只取一瓢饮(1)

    对Python的 pandas 库所有的内置元类.函数.子模块等全部浏览一遍,然后挑选一些重点学习一下.我安装的库版本号为1.3.5,如下: >>> import pandas as ...

  4. python pandas库——pivot使用心得

    python pandas库--pivot使用心得 2017年12月14日 17:07:06 阅读数:364 最近在做基于python的数据分析工作,引用第三方数据分析库--pandas(versio ...

  5. Python pandas库|任凭弱水三千,我只取一瓢饮(5)

    上一篇链接: Python pandas库|任凭弱水三千,我只取一瓢饮(4)_Hann Yang的博客-CSDN博客 S~W:  Function46~56 Types['Function'][45: ...

  6. Python pandas库|任凭弱水三千,我只取一瓢饮(4)

    上一篇链接: Python pandas库|任凭弱水三千,我只取一瓢饮(3)_Hann Yang的博客-CSDN博客  R(read_系列2):  Function36~45 Types['Funct ...

  7. Python pandas库|任凭弱水三千,我只取一瓢饮(7)

    上一篇链接: Python pandas库|任凭弱水三千,我只取一瓢饮(6)_Hann Yang的博客-CSDN博客 to_系列函数:22个 (12~22) Function12 to_numpy(s ...

  8. Python pandas库|任凭弱水三千,我只取一瓢饮(6)

    上一篇链接: Python pandas库|任凭弱水三千,我只取一瓢饮(5)_Hann Yang的博客-CSDN博客 DataFrame 类方法(211个,其中包含18个子类.2个子模块) >& ...

  9. Python pandas库|任凭弱水三千,我只取一瓢饮(3)

    上一篇链接: Python pandas库|任凭弱水三千,我只取一瓢饮(2)_Hann Yang的博客-CSDN博客 R(read_系列1):  Function26~35 Types['Functi ...

最新文章

  1. R语言在ggplot中使用变量指定柱状图的名称实战
  2. ViT作者、谷歌大脑研究员翟晓华:大规模视觉表征学习
  3. Spring MVC Controller介绍
  4. 哈,又一款超级简单的队列(MQ)实现方案来了~
  5. Flink 靠什么征服饿了么工程师?
  6. Flink批处理优化器之数据属性
  7. Verilog hdl与VHDL混用详解
  8. java class 字符串_java基础知识四 math类 字符 字符串 控制台输入输出 StringBuilder与StringBuffer...
  9. 中国条码解码器市场趋势报告、技术动态创新及市场预测
  10. 9_flutter_SimpleDialog(对话框),FloatingActionButton(浮动按钮),Slider(滑动器)
  11. 端口与进程-----Window cmd命令
  12. 服了!程序员面试现场80行代码写俄罗斯方块,最终拿到15K月薪!
  13. 使用Strophe连接xmpp,轻松构建web即时聊天工具
  14. Bartender软件使用VB判断条件并返回值
  15. 电脑分屏没有声音_怎样解决qq屏幕分享没有声音问题
  16. iPhone屏幕尺寸
  17. 敖丙带你设计【秒杀系统】
  18. js实现雪花效果(超简单)
  19. 游戏程序必备spyder程序--可进可退的多级菜单系统
  20. laravel easywechat 网页授权

热门文章

  1. 用SDWebImage加载FLAnimatedImage
  2. kingcms的标签
  3. Web常用字體-Font-Family
  4. css_selector定位总结
  5. 【Codeforces】894E.Ralph and Mushrooms Tarjan缩点+DP
  6. Aspectj切入点语法定义
  7. JS中如何判断null
  8. JAVA线程池的创建
  9. 面试常备题(三)----顺时针打印矩阵
  10. 利用gp自己做的生成缓冲区的代码