小编guy*_*guy的帖子

绘制datetime.date pandas

我从特定日历日期的某些值计数创建了一个pandas数据帧.我是这样做的:

time_series = pd.DataFrame(df['Operation Date'].value_counts().reset_index())
time_series.columns = ['date', 'count']
Run Code Online (Sandbox Code Playgroud)

基本上,它是两列,第一个"日期"是一个带有datetime.date对象的列,第二列,"count"只是整数值.

现在,我想绘制一个散点图或KDE来表示日历日的值变化,但是如何?

我查看了数据框,它看起来整齐有序,正如我上面所描述的那样.但是当我尝试:

time_series.plot(kind='kde')
plt.show()
Run Code Online (Sandbox Code Playgroud)

我得到一个图,其中x轴是从-50到150,好像它datetime.date以某种方式将对象解析为整数.此外,它产生两个相同的图而不是一个.

我知道如何绘制它们并沿着x轴看日历日吗?

python datetime matplotlib pandas

8
推荐指数
1
解决办法
3万
查看次数

将Pandas Series作为行有效地添加到现有数据框中

我有一个大约160k行乘24列的大型数据框架.我还有一个长度为26的熊猫系列,我想逐行添加到我的数据框中,以形成一个160k行×50列的最终数据帧,但我的代码非常缓慢.

具体来说这很慢,但它有效: final = df.apply(lambda x: x.append(my_series), axis=1)

这产生了正确的最终形状: Out[49]: (163008, 50)

在哪里,df.shape现在Out[48]: (163008, 24)my_series.shape将来Out[47]: (26,)

这种方法对于<50k行范围内的较小数据帧表现良好,但显然它并不理想.

更新:为以下解决方案添加了基准

使用%timeit测试数据框和测试系列进行了一些测试,具有以下尺寸: test_df.shape

Out[18]: (156108, 24)

test_series.shape

Out[20]: (26,)

数据框和系列都包含字符串,浮点数,整数,对象等的混合.

使用Numpy接受的解决方案:

%timeit test_df.join(pd.DataFrame(np.tile(test_series.values, len(test_df.index)).reshape(-1, len(attributes)), index=test_df.index, columns=test_series.index))

10 loops, best of 3: 220 ms per loop

使用assign: 我继续接收ValueError: Length of values does not match length of index我的测试系列,但是当我使用更简单的系列时,如果它有效,不知道这里发生了什么......

使用@Divakar的自定义函数

%timeit rowwise_concat_df_series(test_df, test_series)

1 loop, best of 3: 424 ms per loop

numpy pandas

6
推荐指数
1
解决办法
359
查看次数

Pandas - 访问对象属性列的快速方法

假设我在 python 中有一个自定义类,它具有属性val. 如果我有一个包含这些对象列的 Pandas 数据框,我如何访问此属性并使用此值创建一个新列?

示例数据:

df
Out[46]: 
row   custom_object
1     foo1
2     foo2
3     foo3
4     foo4
Name: book, dtype: object
Run Code Online (Sandbox Code Playgroud)

自定义对象属于 Foo 类:

class Foo:
    def __init__(self, val):
        self.val = val
Run Code Online (Sandbox Code Playgroud)

我所知道的使用实例属性创建新列的唯一方法是使用applyandlambda组合,这在大型数据集上很慢:

df['custom_val'] = df['custom_object'].apply(lambda x: x.val)

有没有更有效的方法?

python performance pandas

6
推荐指数
1
解决办法
3847
查看次数

Pandas 用一种颜色绘制正值,另一种颜色绘制负值

我有一个 Pandas 数据框,我在其中绘制了 12 列中的两列,一列作为 x 轴,另一列作为 y 轴。x 轴只是一个时间序列,y 轴是值是介于 -5000 和 5000 之间的随机整数。

有什么方法可以仅使用这 2 列来制作散点图,其中 y 的正值是某种颜色,负值是另一种颜色?

我尝试了很多变化,但什么也做不了。我尝试对负数/正数使用不同的颜色图、颜色网格、使用 seaborn 颜色图和布尔值掩码。我没办法。

python plot matplotlib pandas

5
推荐指数
1
解决办法
6751
查看次数

Pandas Shift将Ints转换为Float和Rounds

当移动整数列时,我知道当Pandas因为存在NaN而自动将整数转换为浮点数时如何修复我的列. 我基本上使用这里描述的方法.

但是,如果移位引入了NaN,从而将所有整数转换为浮点数,则会发生一些舍入(例如,在纪元时间戳上),因此即使将其重新转换为整数也不会复制它原来的内容.

有任何解决这个问题的方法吗?

示例数据:

pd.DataFrame({'epochee':[1495571400259317500,1495571400260585120,1495571400260757200, 1495571400260866800]})
Out[19]: 
                 epoch
0  1495571790919317503
1  1495999999999999999
2  1495571400265555555
3  1495571400267777777
Run Code Online (Sandbox Code Playgroud)

示例代码:

df['prior_epochee'] = df['epochee'].shift(1)
df.dropna(axis=0, how='any', inplace=True)
df['prior_epochee'] = df['prior_epochee'].astype(int)
Run Code Online (Sandbox Code Playgroud)

结果输出:

Out[22]: 
                 epoch          prior_epoch
1  1444444444444444444  1400000000000000000
2  1433333333333333333  1490000000000000000
3  1777777777777777777  1499999999999999948
Run Code Online (Sandbox Code Playgroud)

python rounding pandas

5
推荐指数
1
解决办法
308
查看次数

Statsmodels PACF 图置信区间与 PACF 函数不匹配

我有一个时间序列,在观察偏自相关 (PACF) 图时似乎有明显的滞后,即 PACF 值大于蓝色置信区间。我想以编程方式验证这一点,但它似乎不起作用。

我使用 statsmodels 时间序列 api 绘制了 PACF 图,这表明第一次滞后很显着。因此,我使用PACF 估计来获取 PACF 值以及每个点的置信区间,但两者之间的置信区间不匹配。更奇怪的是源代码中的绘图函数使用底层估计函数,因此它们应该匹配。

例子:

import numpy as np
import matplotlib.pyplot as plt
import statsmodels.api as sm

x = np.arange(1000) 
sm.graphics.tsa.plot_pacf(x)
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

这表明第一个滞后非常显着,约为 0.98,并且整个图中的置信区间(蓝色矩形)约为 (-0.06, 0.06)。

或者,当尝试获取这些精确的绘图值时(为简洁起见,仅获取前 10 个滞后):

sm.tsa.stattools.pacf(x, nlags=10, alpha=0.05) 
Run Code Online (Sandbox Code Playgroud)

生成的 PACF 值是(与上图匹配):

array([ 1.        ,  0.997998  , -0.00200201, -0.00200402, -0.00200605,
        -0.0020081 , -0.00201015, -0.00201222, -0.0020143 , -0.00201639,
        -0.00201849])
Run Code Online (Sandbox Code Playgroud)

置信区间(上图中以蓝色显示)在第一个滞后中似乎是关闭的:

 array([[ 1.        ,  1.        ],
        [ 0.93601849,  1.0599775 ],
        [-0.06398151,  0.0599775 ],
        [-0.06398353, …
Run Code Online (Sandbox Code Playgroud)

python statsmodels

5
推荐指数
1
解决办法
4106
查看次数

XlsxWriter设置全局字体大小

首次创建工作簿时,如何使用xlswriter永久设置字体大小?

我试过了:

book = xlsxwriter.Workbook(os.getcwd() + '\\test.xlsx')
sheet1 = book.add_worksheet()
format = book.add_format()
format.set_font_size(10)
Run Code Online (Sandbox Code Playgroud)

但是我仍然在输出中获得默认大小11。有什么问题

python xlsxwriter

4
推荐指数
1
解决办法
6523
查看次数

Pandas Groupby &amp; Pivot

我有一个熊猫df设置如下:

    product salesperson positionHours  levelHours 
0      soap        john            10          25
1      nuts        john            15          27
2      soap        doug            12          29
3      nuts        doug            11          24
4      soap        tory            19          20
5      nuts        tory            20          20
Run Code Online (Sandbox Code Playgroud)

我正在努力实现以下目标,我如何在熊猫中做到这一点?

    product     measurement   john  doug  tory 
0      soap   positionHours     10    12    19
1                levelHours     25    29    20 
3      nuts   positionHours     15    11    20
4                levelHours     27    24    20 
Run Code Online (Sandbox Code Playgroud)

python pandas

3
推荐指数
1
解决办法
63
查看次数