小编piR*_*red的帖子

如何透视数据框

  • 什么是枢轴?
  • 如何转动?
  • 这是一个支点吗?
  • 长格式到宽格式?

我见过很多关于数据透视表的问题.即使他们不知道他们询问数据透视表,他们通常也是.几乎不可能写出一个规范的问题和答案,其中包含了旋转的所有方面....

......但是我要试一试.


现有问题和答案的问题在于,问题通常集中在OP难以概括以便使用一些现有的良好答案的细微差别.但是,没有一个答案试图给出全面的解释(因为这是一项艰巨的任务)

从我的谷歌搜索中查看一些示例

  1. 如何在Pandas中透视数据框?
    • 好问答.但答案只回答了具体问题,几乎没有解释.
  2. pandas将表转移到数据框
    • 在这个问题中,OP关注的是枢轴的输出.即列的外观.OP希望它看起来像R.这对熊猫用户来说并不是很有帮助.
  3. pandas转动数据框,重复行
    • 另一个体面的问题,但答案集中在一种方法,即 pd.DataFrame.pivot

因此,每当有人搜索时,pivot他们会得到零星的结果,而这些结果可能无法回答他们的具体问题.


建立

您可能会注意到,我明显地将我的列和相关列值命名为与我将如何在下面的答案中进行调整相对应.请注意,以便熟悉哪些列名称可以从哪里获得您正在寻找的结果.

import numpy as np
import pandas as pd
from numpy.core.defchararray import add

np.random.seed([3,1415])
n = 20

cols = np.array(['key', 'row', 'item', 'col'])
arr1 = (np.random.randint(5, size=(n, 4)) // [2, 1, 2, 1]).astype(str)

df = pd.DataFrame(
    add(cols, arr1), columns=cols
).join(
    pd.DataFrame(np.random.rand(n, 2).round(2)).add_prefix('val')
)
print(df)

     key   row   item   col  val0  val1
0   key0  row3  item1  col3  0.81  0.04
1   key1 …
Run Code Online (Sandbox Code Playgroud)

python pivot group-by pandas pandas-groupby

296
推荐指数
4
解决办法
2万
查看次数

在datetime,Timestamp和datetime64之间转换

如何将numpy.datetime64对象转换为datetime.datetime(或Timestamp)?

在以下代码中,我创建了datetime,timestamp和datetime64对象.

import datetime
import numpy as np
import pandas as pd
dt = datetime.datetime(2012, 5, 1)
# A strange way to extract a Timestamp object, there's surely a better way?
ts = pd.DatetimeIndex([dt])[0]
dt64 = np.datetime64(dt)

In [7]: dt
Out[7]: datetime.datetime(2012, 5, 1, 0, 0)

In [8]: ts
Out[8]: <Timestamp: 2012-05-01 00:00:00>

In [9]: dt64
Out[9]: numpy.datetime64('2012-05-01T01:00:00.000000+0100')
Run Code Online (Sandbox Code Playgroud)

注意:从时间戳中获取日期时间很容易:

In [10]: ts.to_datetime()
Out[10]: datetime.datetime(2012, 5, 1, 0, 0)
Run Code Online (Sandbox Code Playgroud)

但是我们如何从()中提取datetime或者?Timestampnumpy.datetime64dt64 …

python datetime numpy pandas

256
推荐指数
8
解决办法
35万
查看次数

Python中的Pandas和NumPy + SciPy有什么区别?

它们看起来非常相似,我很好奇哪种方案对财务数据分析更有利.

python numpy scipy pandas

187
推荐指数
2
解决办法
12万
查看次数

NumPy或Pandas:将数组类型保持为整数,同时具有NaN值

是否有一种首选方法可以将numpy数组的数据类型固定为int(int64或者其他),同时仍然将内部元素列为numpy.NaN

特别是,我正在将内部数据结构转换为Pandas DataFrame.在我们的结构中,我们有整数类型的列仍然有NaN(但列的dtype是int).如果我们把它变成一个DataFrame,它似乎将所有东西重铸为浮点数,但我们真的很喜欢int.

思考?

事情尝试:

我尝试使用from_records()pandas.DataFrame下的函数coerce_float=False,但这并没有帮助.我也尝试使用带有NaN fill_value的NumPy掩码数组,这也没有用.所有这些都导致列数据类型变为浮点数.

python int numpy type-conversion pandas

140
推荐指数
6
解决办法
5万
查看次数

如何将数据分成3组(训练,验证和测试)?

我有一个熊猫数据帧,我希望把它分成3组.我知道使用train_test_splitsklearn.cross_validation,一个可以在两个集(训练集和测试)分割数据.但是,我找不到任何关于将数据拆分为三组的解决方案.最好,我想拥有原始数据的索引.

我知道解决方法是使用train_test_split两次并以某种方式调整索引.但有没有更标准/内置的方法将数据分成3组而不是2组?

numpy machine-learning dataframe pandas scikit-learn

112
推荐指数
4
解决办法
6万
查看次数

Pandas将数据帧转换为元组数组

我已经使用pandas操纵了一些数据,现在我想执行批量保存回数据库.这需要我将数据帧转换为元组数组,每个元组对应于数据帧的"行".

我的DataFrame看起来像:

In [182]: data_set
Out[182]: 
  index data_date   data_1  data_2
0  14303 2012-02-17  24.75   25.03 
1  12009 2012-02-16  25.00   25.07 
2  11830 2012-02-15  24.99   25.15 
3  6274  2012-02-14  24.68   25.05 
4  2302  2012-02-13  24.62   24.77 
5  14085 2012-02-10  24.38   24.61 
Run Code Online (Sandbox Code Playgroud)

我想将它转换为元组数组,如:

[(datetime.date(2012,2,17),24.75,25.03),
(datetime.date(2012,2,16),25.00,25.07),
...etc. ]
Run Code Online (Sandbox Code Playgroud)

关于如何有效地做到这一点的任何建议?

python pandas

106
推荐指数
8
解决办法
12万
查看次数

设置pandas数据帧中的列顺序

有没有办法根据我的个人偏好重新排序pandas数据框中的列(即不按字母顺序或数字排序,但更像是遵循某些约定)?

简单的例子:

frame = pd.DataFrame({
        'one thing':[1,2,3,4],
        'second thing':[0.1,0.2,1,2],
        'other thing':['a','e','i','o']})
Run Code Online (Sandbox Code Playgroud)

产生这个:

   one thing other thing  second thing
0          1           a           0.1
1          2           e           0.2
2          3           i           1.0
3          4           o           2.0
Run Code Online (Sandbox Code Playgroud)

但相反,我想这样:

   one thing second thing  other thing
0          1           0.1           a
1          2           0.2           e
2          3           1.0           i
3          4           2.0           o
Run Code Online (Sandbox Code Playgroud)

(请提供一个通用的解决方案,而不是针对这种情况.非常感谢.)

python pandas

89
推荐指数
9
解决办法
14万
查看次数

pandas中的大型持久性DataFrame

我正在探索作为长期SAS用户切换到python和pandas.

但是,今天运行一些测试时,我很惊讶python在尝试pandas.read_csv()128mb csv文件时内存不足.它有大约200,000行和200列主要是数字数据.

使用SAS,我可以将csv文件导入SAS数据集,它可以和我的硬盘一样大.

有类似的东西pandas吗?

我经常处理大型文件,无法访问分布式计算网络.

python sas pandas

88
推荐指数
4
解决办法
6万
查看次数

Pandas的concat函数中的'levels','keys'和names参数是什么?

问题

  • 我该怎么用pd.concat
  • 是什么意思levels
  • 是什么意思keys
  • 是否有一些示例来帮助解释如何使用所有参数?

熊猫的concat功能是合并公用事业的瑞士军刀.它有用的各种情况很多.现有文档遗漏了一些可选参数的一些细节.其中包括levelskeys论点.我开始弄清楚这些论点的作用.

我将提出一个问题,它将成为许多方面的门户pd.concat.

考虑数据帧d1,d2以及d3:

import pandas as pd

d1 = pd.DataFrame(dict(A=.1, B=.2, C=.3), [2, 3])
d2 = pd.DataFrame(dict(B=.4, C=.5, D=.6), [1, 2])
d3 = pd.DataFrame(dict(A=.7, B=.8, D=.9), [1, 3])
Run Code Online (Sandbox Code Playgroud)

如果我将这些连接在一起

pd.concat([d1, d2, d3], keys=['d1', 'd2', 'd3'])
Run Code Online (Sandbox Code Playgroud)

我得到了一个pandas.MultiIndexfor my columns对象的预期结果:

        A    B    C    D
d1 2  0.1  0.2  0.3  NaN
   3  0.1 …
Run Code Online (Sandbox Code Playgroud)

python pandas

87
推荐指数
1
解决办法
7961
查看次数

将Django QuerySet转换为pandas DataFrame

我将把Django QuerySet转换为pandas DataFrame,如下所示:

qs = SomeModel.objects.select_related().filter(date__year=2012)
q = qs.values('date', 'OtherField')
df = pd.DataFrame.from_records(q)
Run Code Online (Sandbox Code Playgroud)

它有效,但是有更有效的方法吗?

python django pandas

78
推荐指数
4
解决办法
3万
查看次数