这是一个早在 2013年就被发现的一个小问题 :即 pandas.pivot_table() index 里边含有空值的, 空值的对应透视数据 会被忽略。

使用pd.fillna()

import pandas
import numpy
a = [['a', 'b', 12, 12, 12], ['a', numpy.nan, 12.3, 233., 12], ['b', 'a', 123.23, 123, 1], ['a', 'b', 1, 1, 1.]]
df = pandas.DataFrame(a, columns=['a', 'b', 'c', 'd', 'e'])
df_pivot = df.pivot_table(index=['a', 'b'], values=['c', 'd', 'e'], aggfunc=sum)
print(df)
# df如下
   a    b       c    d   e
0  a    b   12.00   12  12
1  a  NaN   12.30  233  12
2  b    a  123.23  123   1
3  a    b    1.00    1   1
print(df_pivot)
# df_pivot如下
          c    d   e
a b   13.00   13  13  # [a NaN 12.30 233 12] 默认删除不计
b a  123.23  123   1

解决方法:使用df.fillna(‘string’)把空值出填充个字符串就OK了。例如(原文链接点击这里

In [31]: df2 = df.copy()
In [32]: df2['dummy'] = np.nan
In [33]: df2['b'] = df2['b'].fillna('dummy')
In [34]: df2
Out[34]: 
       a      b       c    d   e  dummy
    0  a      b   12.00   12  12    NaN
    1  a  dummy   12.30  233  12    NaN
    2  b      a  123.23  123   1    NaN
    3  a      b    1.00    1   1    NaN
# 此处,之前被删除的那一行的值又回来了
In [35]: df2.pivot_table(index=['a', 'b'], values=['c', 'd', 'e'], aggfunc=sum)
Out[35]: 
               c      d     e
a b       13.00   13.0  13.0
  dummy   12.30  233.0  12.0
b a      123.23  123.0   1.0
In [36]: df2.pivot_table(index=['a', 'b'], values=['c', 'd', 'e'], aggfunc=sum).replace('dummy',np.nan)
Out[36]: 
               c      d     e
a b       13.00    13.0   13.0
  nan     12.30   233.0   12.0
b a      123.23   123.0    1.0
                    这是一个早在2013年就被发现的一个小问题:即pandas.pivot_table()的index里边含有空值的,空值的对应透视数据会被忽略。使用pd.fillna()import pandasimport numpya = [['a', 'b', 12, 12, 12], ['a', numpy.nan, 12.3, 233., 12], ['b', 'a', 123.23, 123,...
				
本文实例讲述了Python使用Pandas库常见操作。分享给大家供大家参考,具体如下: PandasPython的核心数据分析支持库,提供了快速、灵活、明确的数据结构,旨在简单、直观地处理关系型、标记型数据。Pandas常用于处理带列标签的矩阵数据、与 SQL 或 Excel 表类似的表格数据,应用于金融、统计、社会科学、工程等领域里的数据整理与清洗、数据分析与建模、数据可视化与制表等工作。 数据类型:Pandas 不改变原始的输入数据,而是复制数据生成新的对象,有普通对象构成的一维数组成为Series,由Series构成的二维数组表称为DataFrame,其被称为index
我想将我的论文专门献给我的父亲,母亲,妻子和女儿。 我非常感谢我的顾问和在我在学习期间的灵感和指导。 在过去的两年中,他的宝贵支持和指导一直帮助我提高了专业和学术技能。 作为他的学生,我感到很荣幸。 我非常感谢我的朋友Irfan Kareem先生, Muneeb Ul Haque先生, Mansoor Waheed先生, Bilal Iqbal先生和AbdulRehman Azam先生的友谊和帮助。 最后,我要感谢我的父亲穆罕默德·哈菲兹·艾哈迈德( Muhammad Hafeez Ahmed) ,我的母亲Shahazad Yaseem ,我的妻子Hajra Azam和我的女儿Khansa Saeed,感谢他们的爱戴,支持和鼓励。 数据科学用Python 下载数据集 如果缺少任何数据集,请发送电子邮件 第1章:Pytho Jarred Bultema,贾斯汀·斯旺斯堡,杰西·林 大规模时间序列问题的建模可以直接在DataRobot软件中通过GUI或通过R或Python建模API进。 尽管该软件能够为每个项目最多建模一百万个序列,并应用最先进的建模技术,但往往有动机为多个DataRobot项目中的数据科学问题的各个方面建模。 这样做的动机可能包括希望在外部对相似的系列进聚类,应用不同的数据操作或更正,利用不同的数据源,应用不同的差异化策略,利用不同的特征派生窗口或调查不同的“预测距离”范围。 无论出于何种原因,在内部,我们都发现在大型或复杂的时间序列用例上,通常可以通过将较大的,具有挑战性的问题分解为较小的部分并分别对每个部分进建模来提高性能。 直接使用R或Pytho 新一届的全国大学生智能汽车竞赛开始了,想下载官网上的技术报告,看看大佬们在坐车时候的想法,而官网的技术报告有点多,而且还没打包,得一个慢慢慢慢点击下载,下载速率太慢了,这不刚学了一下蟒爬虫吗,就想试试能不能使用蟒爬虫下载智能车竞赛官网的技术报告。参见我的这篇文章 二,目标分析 1,技术报告的URL链接 :官网,找到下载技术报告的页面,因为参赛者的队伍比较多,优秀的队伍的技术报告也就多,所以官网将技术报告分到好几个页面中,点击一个选项组, 2019-10-23第十四届竞赛技术报告(6)先找到一个要下载的技术报告,发现点击后就会下载,这份这个技术报告的名字,快捷点击检查,查看网页代码,发现技术报告的下载地址就是<a>...</a>标签内href后面的链接,这样我们就找到了技术报告的链接地址了,但是一个页面中有那么多技术报告,不能一个一个填啊,所以我们就需要遍历查找这些<a>...</
今天偶然发现,当有空值时,groupyby会自动删除,也就是说不会显示出有空值得分组变量,我们得解决办法就是填充空值。 直接上代码了: import pandas as pd import numpy as np data = pd.read_excel('C:\\Users\\17621802479\\Desktop\\源数据.xlsx',sheet_name='元数据') print(da...
今天,我们将探讨如何在 Python 的 Pandas 库中创建 GroupBy 对象以及该对象的工作原理。我们将详细了解分组过程的每个步骤,可以将哪些方法应用于 GroupBy 对象上,以及我们可以从中提取哪些有用信息 不要再观望了,一起学起来吧 使用 Groupby 三个步骤 首先文末要知道,任何 groupby 过程都涉及以下 3 个步骤的某种组合: 根据定义的标准将原始对象分成组对每个组应用某些函数整合结果 让我先来大致浏览下今天用到的测试数据集 import pandas a
Python pandaspivot_table可以实现与Excel透视表类似的效果,但是如果index参数列中存在Nan值,就会导致改记录不被计入。 result=data.pivot_table(index=["商家名称","月份","活动类型","满减门槛","满减金额"],values=["补贴金额","原价"],aggfunc={"补贴金额":np.sum,"原价":np.sum}).reset_index()#因满减门槛及满减金额存在Nan值,导致pivot_table的结果并不准确 ```python with engine.connect() as connection: result = connection.execute("SELECT * FROM table_name WHERE condition") 最后,可以使用 fetchall() 或者 fetchone() 函数来获取查询结果。 ```python data = result.fetchall() 可以将上面的代码封装成函数来实现数据库查询操作。 ```python def query_data(query_str): engine = create_engine('数据库连接字符串') with engine.connect() as connection: result = connection.execute(query_str) data = result.fetchall() return data 使用时直接调用函数即可,例如 ```python data = query_data("SELECT * FROM table_name WHERE condition")