我从特定日历日期的某些值计数创建了一个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轴看日历日吗?
我有一个大约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
假设我在 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)
我所知道的使用实例属性创建新列的唯一方法是使用apply
andlambda
组合,这在大型数据集上很慢:
df['custom_val'] = df['custom_object'].apply(lambda x: x.val)
有没有更有效的方法?
我有一个 Pandas 数据框,我在其中绘制了 12 列中的两列,一列作为 x 轴,另一列作为 y 轴。x 轴只是一个时间序列,y 轴是值是介于 -5000 和 5000 之间的随机整数。
有什么方法可以仅使用这 2 列来制作散点图,其中 y 的正值是某种颜色,负值是另一种颜色?
我尝试了很多变化,但什么也做不了。我尝试对负数/正数使用不同的颜色图、颜色网格、使用 seaborn 颜色图和布尔值掩码。我没办法。
当移动整数列时,我知道当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) 我有一个时间序列,在观察偏自相关 (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) 首次创建工作簿时,如何使用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。有什么问题
我有一个熊猫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 ×7
pandas ×6
matplotlib ×2
datetime ×1
numpy ×1
performance ×1
plot ×1
rounding ×1
statsmodels ×1
xlsxwriter ×1