Python数据分析——Pandas基础:dt.datetime与pivot_table()数据透视表

这一篇主要讲的是:如何用pandas做数据透视表 以及 时间数据上的小处理
一些非常基础的内容,把官方的文档进行了一些解释

这里希望我们做一个关于城市温度的年份数据透视表,也就是要先处理一下时间数据。

在dataframe里面,时间数据的处理是用这么一条代码

dataframe["column"].dt.[component]

这个component可以用year, month, day来代替


dataframe["column"].dt.year

dataframe["column"].dt.month

dataframe["column"].dt.day

比如原数据是这样的

In[1]: temperatures["date"]
Out[1]:
0       2000-01-01
1       2000-02-01
2       2000-03-01
3       2000-04-01
4       2000-05-01
           ...

16495   2013-05-01
16496   2013-06-01
16497   2013-07-01
16498   2013-08-01
16499   2013-09-01
Name: date, Length: 16500, dtype: datetime64[ns]

然后我们只取年份

In [1]: temperatures["date"].dt.year
Out[1]:
0        2000
1        2000
2        2000
3        2000
4        2000
         ...

16495    2013
16496    2013
16497    2013
16498    2013
16499    2013
Name: date, Length: 16500, dtype: int64

下面整体说下数据透视表DataFrame.pivot_table,以下是官方文档给的

DataFrame.pivot_table(values=None, index=None, columns=None, aggfunc='mean',
                                            fill_value=None, margins=False, dropna=True,
                                            margins_name='All', observed=False, sort=True)

ParametersDescriptionvalues要聚合的值,也就是我们要拿来”透视”的值indexcolumn、Grouper、array或一个list。也就是我们的索引列,相当于rowscolumnscolumn、Grouper、数组或前一个列表。如果传递的是数组,则它必须与数据的长度相同。一般来说,输入的都是列标签aggfunc聚合函数,默认为meanfill_value是否填充缺失值,默认不填充,填的话可以自己定填什么margins默认为 False,对添加的所有行/列进行一个总计。dropna不要包括其条目全部为 NaN 的列。margins_namestr默认”All”,当margins为 True 时将包含总计的行/列的名称。observed认为 False,这仅适用于任何分组是分类的。如果为真:仅显示分类分组的观察值。如果为假:显示分类分组的所有值。sort是否排序

给个例子就什么都懂了,相互对应一下。


temp_by_country_city_vs_year = data.pivot_table('avg_temp_c', index = ['country', 'city'], columns = 'year')

Out[1]:
year                              2000    2001    2002    2003    2004  ...    2009    2010    2011    2012    2013
country       city                                                      ...

Afghanistan   Kabul             15.823  15.848  15.715  15.133  16.128  ...  15.093  15.676  15.812  14.510  16.206
Angola        Luanda            24.410  24.427  24.791  24.867  24.216  ...  24.325  24.440  24.151  24.240  24.554
Australia     Melbourne         14.320  14.180  14.076  13.986  13.742  ...  14.647  14.232  14.191  14.269  14.742
              Sydney            17.567  17.854  17.734  17.592  17.870  ...  18.176  17.999  17.713  17.474  18.090
Bangladesh    Dhaka             25.905  25.931  26.095  25.927  26.136  ...  26.536  26.648  25.803  26.284  26.587
...                                ...     ...     ...     ...     ...  ...     ...     ...     ...     ...     ...

United States Chicago           11.090  11.703  11.532  10.482  10.943  ...  10.298  11.816  11.214  12.821  11.587
              Los Angeles       16.643  16.466  16.430  16.945  16.553  ...  16.677  15.887  15.875  17.090  18.121
              New York           9.969  10.931  11.252   9.836  10.389  ...  10.142  11.358  11.272  11.971  12.164
Vietnam       Ho Chi Minh City  27.589  27.832  28.065  27.828  27.687  ...  27.853  28.282  27.675  28.249  28.455
Zimbabwe      Harare            20.284  20.861  21.079  20.889  20.308  ...  20.524  21.166  20.782  20.523  19.756

Calculating on a pivot table 数据透视表——计算

得到数据透视表后,我们就可以对这个数据透视表进行一些运算。


mean_temp_by_year = temp_by_country_city_vs_year.mean()

print(mean_temp_by_year[mean_temp_by_year == mean_temp_by_year.max()])

mean_temp_by_city = temp_by_country_city_vs_year.mean(axis="columns")

print(mean_temp_by_city[mean_temp_by_city == mean_temp_by_city.min()])

因为我们这里都不是用的切片,用切片的话得到的一直还会是dataframe,如果不是切片就会变成series。那么像第二行代码里面这个,就是一个布尔值。


In [2]:
mean_temp_by_year == mean_temp_by_year.max()
Out[2]:
year
2000    False
2001    False
2002    False
2003    False
2004    False
2005    False
2006    False
2007    False
2008    False
2009    False
2010    False
2011    False
2012    False
2013     True
dtype: bool

我们需要在它外面额外加一个框并贴上原来的dt名称,这样pandas就会去找那个唯一的true值,并输出

In [1]:
mean_temp_by_year[mean_temp_by_year == mean_temp_by_year.max()]
Out[1]:
year
2013    20.312
dtype: float64

Original: https://blog.csdn.net/weixin_44460572/article/details/123936924
Author: Pigou_
Title: Python数据分析——Pandas基础:dt.datetime与pivot_table()数据透视表

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/751444/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 网络爬虫之 scrapy框架入门的基本使用

    首先我们想要使用scrapy框架。我们先创建一个scrapy框架的工程文件在pycharm编辑器中的终端输入 :scrapy startproject (固定写法) 自己在随便想个…

    Python 2023年10月6日
    025
  • 3min快速掌握Go语言正/反向代理的姿势

    先重温一下什么叫反向代理,正向代理。 鹅厂二面,nginx回忆录 所谓正向/反向代理取决于代理的是 出站请求,还是 入站请求。 正向代理: 代理的 出站请求, 客户端能感知到代理程…

    Python 2023年10月15日
    047
  • 你是缓慢悠闲的“小辣鸡”,还是超尘逐电的“闪电侠”?

    导语 还记得经常会看到的打字日结员吗?这么好的事情。 反正小编是不信的~~~~ 除了这个我还特别印象深刻的一份工作就是刚大学毕业出来的时候,第一份工作是做的线上的客服,直接测试打字…

    Python 2023年9月21日
    030
  • ROS2时间同步(python)

    最近1周一直研究ROS2的时间同步,翻越很多博客,很少有人使用ROS2进行时间同步的代码,无奈不断尝试与源码阅读,终于将其搞定, 为此,本博客将介绍基于python的ROS2的时间…

    Python 2023年10月28日
    021
  • pytest学习和使用1-pytest安装和版本查看

    1 pytest安装和初步使用 1 学习来源 2 依赖的环境 3 本文学习环境 4 pytest安装 5 查看pytest版本 1 学习来源 https://docs.pytest…

    Python 2023年9月10日
    049
  • pandas怎么去除数据中的重复值

    废话不多说,直接进入正题。 比方说,现在有一份数据表,如下图:以ASIN为例,假设有3000行数据,且其中有些ASIN值有重复的,现在需要将重复的ASIN值去除并保留一个即可。 使…

    Python 2023年8月7日
    048
  • Python趣味入门6:能计数的循环语句for

    上一篇讲了while语句,朋友们是否已经摸到循环的大门了,其实在实际当中for循环远比while循环更加常用。由于涉及集合类型,咱们先从数列开始。 1、range数列 在数学上数列…

    Python 2023年6月12日
    056
  • 修改conda环境名称

    进行conda操作时,可能要创建新的环境,但名称与现有环境有冲突,安装的包有一定差别,或是前期环境命名比较随便。此时要对现有环境进行重命名,有两种方法可以采用。 1.创建新的环境并…

    Python 2023年9月7日
    048
  • 人脸识别检测项目实战

    抵扣说明: 1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。 Original: https://blo…

    Python 2023年11月8日
    042
  • 手写网站服务器~用Python手动实现一个简单的服务器,不借助任何框架在浏览器中输出任意内容

    前言 在公司网站开发中,我们往往借助于Flask、Django等网站开发框架去提高网站开发效率。那么在面试后端开发工程师的时候,面试官可能就会问到网站开发的底层原理是什么? 我们不…

    Python 2023年5月25日
    080
  • mac python3.8怎样安装scrapy_mac下安装scrapy的各种艰辛

    安装pip:sudo python get-pip.py 2.修改pip源码地址(国外地址太慢) Mac配置 .pip/pip.conf mkdir .pip touch pip….

    Python 2023年10月6日
    022
  • Nuscenes 数据集浅析

    Nuscenes 数据集浅析 参考:Nuscenes官网链接注意:文中存在官网还未更新的内容,一般采用 红色部&a…

    Python 2023年10月26日
    028
  • TVM 加速模型,优化推断

    TVM 是一个开源深度学习编译器,可适用于各类 CPUs, GPUs 及其他专用加速器。它的目标是使得我们能够在任何硬件上优化和运行自己的模型。不同于深度学习框架关注模型生产力,T…

    Python 2023年10月28日
    028
  • python开发环境安装问题集合

    1. spyder5.1.2升级后,出现了一个内部问题: 新安装的anoconda3,写了一个非常简单的程序,运行后显示上述internal problem,一般这种可以确实是编译…

    Python 2023年9月18日
    037
  • Java并发之ReentrantLock基础(一)

    ReentrantLock是Java中java.util.concurrent.locks.Lock的一个实现类,顾名思义它是Java中锁的一种实现,具体一点来说它是Java中一种…

    Python 2023年6月9日
    061
  • pycharm运行python程序环境配置

    第一步:pycharm配置python运行环境: setting————–project interpreter 选择d…

    Python 2023年8月1日
    062
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球