chart-7

chart-7

大家好,又见面了,我是全栈君。


  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Tue Feb 21 15:17:51 2017
  4. @author: zzpp220
  5. """
  6. '''合并(merge)-列或者连接(concat)-行数据集'''
  7. from pandas import DataFrame,Series
  8. from numpy import nan as NaN
  9. import pandas as pd
  10. import numpy as np
  11. import json
  12. df1=DataFrame({
    'left':list('bbacaab'),'data1':range(7)})
  13. df2=DataFrame({
    'right':list('abd'),'data2':range(3)})
  14. df12=pd.merge(df1,df2,left_on='left',right_on='right') ##分为内、外连接、像mysql 一样
  15. ##重塑和轴向旋转 stack: change col to row 和unstack:change row to col
  16. '''这个好!!该有的都由了'''
  17. df3=DataFrame(np.arange(6).reshape((2,3)),index=pd.Index(['sd','gz'],name='state'),columns=pd.Index(['one','two','thr'],name='number'))
  18. '''多重索引的Series和DataFrame可以通过stack,unstack相互转哈,默认情况下取的都是最内层的索引'''
  19. ##将列转为行,得到一个Series,索引是一个多重索引
  20. stack_df3=df3.stack()
  21. #对于一个层次化索引的Series ,可以用unstack 重排为DataFrame。
  22. stack_df3.unstack()
  23. '''
  24. df3.stack()
  25. Out[19]:
  26. state  number
  27. sd     one       0
  28.       two       1
  29.       thr       2
  30. gz     one       3
  31.       two       4
  32.       thr       5
  33. dtype: int64
  34. stack_df3.unstack()
  35. Out[22]:
  36. number  one  two  thr
  37. state                
  38. sd        0    1    2
  39. gz        3    4    5
  40. unstack and stack operate on the in-most level-index,also can operate on other level when give other para
  41. '''
  42. stack_df3.unstack('state')==stack_df3.unstack(0)## operate on the out-most level the same as :
  43. ''''stack_df3.unstack() 默认是按最内层也就是’number‘
  44. Out[22]:
  45. number  one  two  thr
  46. state                
  47. sd        0    1    2
  48. gz        3    4    5
  49.                    stack_df3.unstack('state')==stack_df3.unstack(0)
  50.                    Out[25]:
  51.                    state     sd    gz
  52.                    number            
  53.                    one     True  True
  54.                    two     True  True
  55.                    thr     True  True
  56. '''
  57. '''对全部的营养数据做分析'''
  58. db=json.load(open('/media/zzpp220/Data/Linux_Documents/DOWNLOAD/python-DataAnalysis/pydata-book-master/ch07/foods-2011-10-03.json'))
  59. nutrients=DataFrame(db[0]['nutrients'])
  60. '''
  61. nutrients[:10]
  62. Out[36]:
  63.                   description        group units    value
  64. 0                      Protein  Composition     g    25.18
  65. 1            Total lipid (fat)  Composition     g    29.20
  66. 2  Carbohydrate, by difference  Composition     g     3.06
  67. 3                          Ash        Other     g     3.28
  68. 4                       Energy       Energy  kcal   376.00
  69. 5                        Water  Composition     g    39.28
  70. 6                       Energy       Energy    kJ  1573.00
  71. 7         Fiber, total dietary  Composition     g     0.00
  72. 8                  Calcium, Ca     Elements    mg   673.00
  73. 9                     Iron, Fe     Elements    mg     0.64
  74. '''
  75. info_keys=['description','group','id','manufacturer']
  76. info=DataFrame(db,columns=info_keys)##仅仅导入db中的info_keys中的字段,其他的就不导入了; 
  77. info[:5]
  78. '''查看食物类别的分布情况'''
  79. #info.group.value_counts()[:10]#查看group中的分布情况==pd.values_count(info.group)
  80. '''将所有的食物的营养成分整合到一个大表中'''
  81. nutrients=[]
  82. for rec in db:
  83.    fnuts=DataFrame(rec['nutrients'])##将各食物的营养成分整合到一个大表
  84.    fnuts['id']=rec['id']#并且在表中添加一个表示编号的列,用原来的表中的值赋值
  85.    nutrients.append(fnuts)#依次将DataFrame添加到大的list中
  86. nutrients=pd.concat(nutrients,ignore_index=True)##用concat连接起来大表
  87. '''查看表中有多少重复项'''
  88. nutrients.duplicated().sum()
  89. '''丢弃重复项'''
  90. nutrients.drop_duplicates()
  91. '''重命名对象中的列名(因为二者有相同的列,可能会混淆)'''
  92. col_mapping={
    'description':'food','group':'fgroup'}
  93. info=info.rename(columns=col_mapping,copy=False)
  94. '''
  95. info.rename(columns=col_mapping,copy=False)[:3]
  96. Out[50]:
  97.              food                  fgroup    id manufacturer
  98. 0  Cheese, caraway  Dairy and Egg Products  1008            
  99. 1  Cheese, cheddar  Dairy and Egg Products  1009            
  100. 2     Cheese, edam  Dairy and Egg Products  1018
  101. '''
  102. col_mapping={
    'description':'nutrients','group':'nutgroup'}
  103. nutrients=nutrients.rename(columns=col_mapping,copy=False)
  104. '''合并info和nutrients'''
  105. ndata=pd.merge(nutrients,info,on='id',how='outer')
  106. '''根据营养分类,得出锌的中位值'''
  107. result=ndata.groupby(['nutrients','fgroup'])['value'].quantile(0.5)

转载于:https://www.cnblogs.com/zzxx-myblog/p/6481284.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/108645.html原文链接:https://javaforall.net

(0)
上一篇 2022年3月1日 下午5:00
下一篇 2022年3月1日 下午5:00


相关推荐

  • 用websocket实现实时聊天功能

    用websocket实现实时聊天功能最近想实现网页版的仿QQ聊天工具,本来想用ajax实现的,但是一想到要一直轮询,就感觉有点蠢。后来在网上找到了websocket相关的资料,就拿来跟大家分享下(不是很熟练,现在只实现了群聊,单聊的前端不会写了。但可以跟大家说说思路)。服务器端代码:首先要创建类WebSocketConfig实现ServerApplicationConfig接口,ServerApplicationConfig项目…

    2022年10月21日
    6
  • 英语音标学习

    英语音标学习英文字母 共 26 个 名称音 指的是字母在字母表 26 个 中的发音发音 指的是字母在单词中的发音元音字母 同一个字母在不同的单词中会有不同的发音 比如字母 a 辅音字母 同一个字母在不同的单词中发音一致 比如字母 p 音标 共 48 个 单词发音的最小单位 一个单词的发音是由多个音标组合成的 每个音标都有自己的读法和写法 每个英文字母都能找到对应的音标 每个音标都能找到相应的字母

    2026年3月18日
    2
  • NHibernate介绍「建议收藏」

    NHibernate介绍「建议收藏」现代化大型项目通常使用独立的数据库来存储数据,其中以采用关系型数据库居多。用于开发项目的高级语言(C#、Java等)是面向对象的,而关系型数据库是基于关系的,两者之间的沟通需要一种转换,也就是对象/关系数据库映射(Object/RelationalMapping,简称ORM)。C#可用以解决对象/关系数据库映射的工具有多种,常见的有EF(EntityFramework)、NHiberna…

    2022年7月26日
    10
  • 精华网页代码

    精华网页代码1.oncontextmenu=”window.event.returnvalue=false”将彻底屏蔽鼠标右键<tableborderoncontextmenu=return(false)><td>no</table>可用于Table2.<bodyonselectstart=”returnfalse…

    2022年5月29日
    47
  • pycharm远程连接服务器运行代码加调试

    pycharm远程连接服务器运行代码加调试由于计算环境都在 linux 服务器上 本地电脑太烂 但是 linux 服务器上直接又无法使用 pycharm 这款工具 所以解决办法是利用 windows 中安装的 pycharm 远程连接 linux 服务器 1 设置远程连接配置依次打开这三个箭头的指向 打开配置面板 在配置面板中可以为你当前的连接起一个名称 这个名称是用于给你区分你连接的是哪台服务器的 下面依次有三个选项卡 connecti

    2026年3月27日
    2
  • 【Leetcode】单链表中快慢指针(双指针)的运用

    【Leetcode】单链表中快慢指针(双指针)的运用文章目录 Leetcode876 链表的中间结点链表中倒数第 k 个结点 Leetcode876 链表的中间结点相信对于学习链表的初学者来说 首次看到这个题目时 首先想到的应该是通过对整个链表进行一遍遍历求出链表节点的个数 然后再通过循环来找到中间节点 实不相瞒我第一次也是这样想的 但是通过两次循环 不免增加了代码量和时间复杂度 那么 接下来就介绍一下最优的解题思路 最优思路定义两个指针 其中一个指针为慢指针 另一个指针为快指针 对本题而言 慢指针每次走一步 向前移动一个节点 快指针每次走两步 向前移

    2026年3月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号