我有一个像下面这样的熊猫系列:
a = pd.Series([a1, a2, a3, a4, ...])
我想根据以下规则创建另一个熊猫系列:
b = pd.Series(a1, a2+a1**0.8, a3 + (a2 + a1**0.8)**0.8, a4 + (a3 + (a2 + a1**0.8)**0.8)**0.8, ...).
这是可行的使用迭代,但我有一个大型数据集(数百万条记录),我必须执行数千次操作(出于优化目的).我需要非常快速地完成这项操作.有没有可能通过使用pandas或numpy内置函数来实现这一点?
我正在关注这里的教程:https :
//matplotlib.org/gallery/ticks_and_spines/multiple_yaxis_with_spines.html
但是,使用的示例是针对单个图的,我目前正在处理子图。我的版本如下:
p1 = tr[names['equity']].plot(ax=ax3, linewidth = 0.75)
axb = ax3.twinx()
axb.spines["right"].set_position(("axes", 0.5))
p2 = tr[names[local_rating]].plot(ax=axb, c= 'r', linewidth = 0.75)
axb.grid(False)
axb.margins(x=0)
axc = ax3.twinx()
p3 = tr[names['vol']].plot(ax=axc, c = 'g', linewidth = 0.75)
axc.grid(False)
axc.margins(x=0)
ax3.yaxis.label.set_color(p1.get_color())
axb.yaxis.label.set_color(p2.get_color())
axc.yaxis.label.set_color(p3.get_color())
Run Code Online (Sandbox Code Playgroud)
当我尝试执行 pX.get_color() 时,我得到:
AttributeError: 'AxesSubplot' 对象没有属性 'get_color'
我的问题是:我应该使用什么方法来恢复子图的颜色?
我知道我可以手动设置颜色来匹配,因为它是少量的指令,但我只是想知道是否有另一种方法。
谢谢
有没有一种pythonic方法可以按字段分组并检查每个结果组的所有元素是否具有相同的值?
样本数据:
datetime rating signal
0 2018-12-27 11:33:00 IG 0
1 2018-12-27 11:33:00 HY -1
2 2018-12-27 11:49:00 IG 0
3 2018-12-27 11:49:00 HY -1
4 2018-12-27 12:00:00 IG 0
5 2018-12-27 12:00:00 HY -1
6 2018-12-27 12:49:00 IG 0
7 2018-12-27 12:49:00 HY -1
8 2018-12-27 14:56:00 IG 0
9 2018-12-27 14:56:00 HY -1
10 2018-12-27 15:12:00 IG 0
11 2018-12-27 15:12:00 HY -1
12 2018-12-20 15:14:00 IG 0
13 2018-12-20 15:14:00 HY -1
14 2018-12-20 15:50:00 IG -1 …Run Code Online (Sandbox Code Playgroud) 我正在尝试将数据帧转换为 xarray。头部是这样的:
z Class DA x y iline xline idz
2 651 289 1455.0 2.0 0.62239 2345322.0 76720.0
290 1460.0 0.0 0.46037 2345322.0 76720.0
291 1465.0 4.0 0.41280 2345322.0 76720.0
292 1470.0 0.0 0.39540 2345322.0 76720.0
293 1475.0 2.0 0.61809 2345322.0 76720.0
Run Code Online (Sandbox Code Playgroud)
当我使用xr.DataSet.from_dataframe, or 时df.to_xarray,我收到以下错误消息:
cannot handle a non-unique multi-index!
有人知道这里发生了什么吗?
我试图从 pandas Dataframe 中提取由 ID 分割的值。但是,当我提供 apply groupby 时,它不会让我提供轴参数来按行应用函数
raw_data = {"id":{"0":"mergedshape_route_0009","1":"mergedshape_route_0009","2":"mergedshape_route_0009","3":"mergedshape_route_0009","4":"mergedshape_route_0009","5":"mergedshape_route_0009","6":"mergedshape_route_0009","7":"mergedshape_route_0009","8":"mergedshape_route_0009","9":"mergedshape_route_0009"},"shape_pt_lat":{"0":-6.8196991355,"1":-6.8194035167,"2":-6.8192916609,"3":-6.8192597021,"4":-6.8193262829,"5":-6.819395527,"6":-6.8194451,"7":-6.8192582,"8":-6.8184049,"9":-6.8177623},"shape_pt_lon":{"0":39.2987716198,"1":39.2989432812,"2":39.299055934,"3":39.29918468,"4":39.2993053794,"5":39.2993938923,"6":39.2994472,"7":39.2995691,"8":39.2999065,"9":39.2986298},"shape_pt_sequence":{"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8,"9":9},"shape_dist_traveled":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0}}
df = pd.DataFrame(raw_data).groupby("id").apply(lambda row: row.shape_pt_lat, axis = 1)
Run Code Online (Sandbox Code Playgroud)
我收到这个错误
TypeError Traceback (most recent call last)
~\Miniconda3\envs\data_analysis\lib\site-packages\pandas\core\groupby\groupby.py in apply(self, func, *args, **kwargs)
917 try:
--> 918 result = self._python_apply_general(f)
919 except Exception:
~\Miniconda3\envs\data_analysis\lib\site-packages\pandas\core\groupby\groupby.py in _python_apply_general(self, f)
935 keys, values, mutated = self.grouper.apply(f, self._selected_obj,
--> 936 self.axis)
937
~\Miniconda3\envs\data_analysis\lib\site-packages\pandas\core\groupby\groupby.py in apply(self, f, data, axis)
2272 group_axes = _get_axes(group)
-> 2273 res = f(group)
2274 if not _is_indexed_like(res, group_axes):
~\Miniconda3\envs\data_analysis\lib\site-packages\pandas\core\groupby\groupby.py in …Run Code Online (Sandbox Code Playgroud) 我对的用法有些困惑at。从网站:
访问行/列标签对的单个值。
尽管如此,我仍然可以使用它来更改多行中的值。例如:
df = pd.DataFrame([[0, 2, 3], [0, 2, 1], [10, 20, 30]], index=[0, 1, 2], columns=['A', 'B', 'C'])
A B C
0 0 2 3
1 0 2 1
2 10 20 30
idxs = df[df.B==2].index.values
df.at[idxs, 'A'] = -33
A B C
0 -33 2 3
1 -33 2 1
2 10 20 30
Run Code Online (Sandbox Code Playgroud)
实际上,这将更改前两行(第列A)中的值。难道我做错了什么?使用at这种方式更改多行是否安全?
从文档中我看到可以对图表区域使用透明度。我想知道 XlsxWriter 是否支持折线图的透明度。语法:
chart.add_series({
'name': 'something',
'categories': [<excel range>],
'values': [<excel range>],
'line': {'color': 'yellow','transparency': 25},
})
Run Code Online (Sandbox Code Playgroud)
以黄色显示我的折线图。但是,没有透明度。
那么,折线图可以透明吗?如果是这样,正确的语法是什么?
我在 Python 3.6.3 上运行 Excel 2016。另外值得一提的是我如何使用 xlsxwriter:
writer = pd.ExcelWriter(path, engine='xlsxwriter', datetime_format='dd-mmm-yy')
Run Code Online (Sandbox Code Playgroud)
从接受的答案运行代码会产生所需的输出:
但是,如果线条构造中没有使用颜色参数,则透明度将不起作用:
import xlsxwriter
workbook = xlsxwriter.Workbook('chart.xlsx')
worksheet = workbook.add_worksheet()
# Create a new Chart object.
chart = workbook.add_chart({'type': 'line'})
# Write some data to add to plot on the chart.
data = [
[1, 2, 3, 4, 5],
[2, 4, 6, 8, 10],
[3, 6, 9, 12, …Run Code Online (Sandbox Code Playgroud) 我有以下代码来绘制一系列子图:
minorLocator = AutoMinorLocator()
fig, ax = plt.subplots(4, 2, figsize=(8, 12))
data = np.random.rand(20,5)
ax[1, 1].plot(data, alpha=0.5)
ax[1, 1].set_title('Simulation')
ax[1, 1].xaxis.set_minor_locator(minorLocator)
Run Code Online (Sandbox Code Playgroud)
但是,这未能包括情节上的次要刻度“标记”。我也试过
ax[1, 1].plot(data, alpha=0.5)
ax[1, 1].xaxis.set_minor_locator(minorLocator)
ax[1, 1].xaxis.set_minor_formatter(NullFormatter())
Run Code Online (Sandbox Code Playgroud)
但它也失败了。由于我正在使用 seaborn 样式,因此我怀疑需要覆盖 Seaborn 参数,但我不确定如何。这是我的 Seaborn 实现
import seatborn as sns
sns.set()
Run Code Online (Sandbox Code Playgroud)
如何将“每日”标记添加到我的 x 轴?这些是我的情节的例子:
I got this code below, but even debugging it, I cannot understand why gives me out 7 instead of 6.
More precisely when I debudg every return gives me the expected result:
ipdb> --Return-- ['a']ipdb> --Return-- ['a', 'a']ipdb> --Return-- ['a', 'a', 'a']but at the end func() + func() + func() becomes ['a', 'a', 'a', 'a', 'a', 'a', 'a']
why is there one 'a' more???
#!/usr/bin/python
# -*- coding: …Run Code Online (Sandbox Code Playgroud) 我有一个 numpy 数组,我想将其转换为数据框。
import numpy as np
import pandas as pd
nparray = np.array([[1,2,3,4,5],[6,7,8,9,10]])
Run Code Online (Sandbox Code Playgroud)
如何将其转换为数据框,其中数据如下:
col1 col2
1 6
2 7
3 8
4 9
5 10
Run Code Online (Sandbox Code Playgroud) 我有几个价格回报系列,我想以一种在日期之间没有重叠的方式来计算N天的滚动相关性,即,如果我的第一个相关性矩阵属于[2000-04-05-2000-06- 04],则下一个相关矩阵应属于[2000-06-05-2000-08-04]。使用常规的df.rolling(window = window).corr(df,pairwise = True)将返回重叠的日期。
我知道将滚动方法的结果切成薄片会得到我想要的东西,但这意味着我们浪费时间来计算我不会使用的相关性,从而浪费了资源。
有什么建议么?
更新:
这是输入的示例:
更新2:
outputs for pd.show_versions()
INSTALLED VERSIONS
------------------
commit: None
python: 3.6.3.final.0
python-bits: 64
OS: Windows
OS-release: 10
machine: AMD64
processor: Intel64 Family 6 Model 63 Stepping 2, GenuineIntel
byteorder: little
LC_ALL: None
LANG: en
LOCALE: None.None
pandas: 0.20.3
pytest: 3.2.1
pip: 9.0.1
setuptools: 36.5.0.post20170921
Cython: 0.26.1
numpy: 1.14.5
scipy: 0.19.1
xarray: None
IPython: 6.1.0
sphinx: 1.6.3
patsy: 0.4.1
dateutil: 2.6.1
pytz: 2017.2
blosc: None
bottleneck: 1.2.1
tables: 3.4.2
numexpr: 2.6.2 …Run Code Online (Sandbox Code Playgroud) pandas ×8
python ×8
dataframe ×3
python-3.x ×3
matplotlib ×2
numpy ×2
correlation ×1
group-by ×1
iteration ×1
performance ×1
seaborn ×1
xlsxwriter ×1