小编Mr.*_*. T的帖子

`from ... import` vs`import .`

我想知道代码片段之间是否有任何区别

from urllib import request
Run Code Online (Sandbox Code Playgroud)

和片段

import urllib.request
Run Code Online (Sandbox Code Playgroud)

或者它们是否可以互换.如果它们是可互换的,那就是"标准"/"首选"语法(如果有的话)?

谢谢!

python syntax import module python-import

230
推荐指数
3
解决办法
31万
查看次数

熊猫的日期范围

在与NumPy和dateutil斗争了几天后,我最近发现了令人惊叹的Pandas库.我一直在仔细阅读文档和源代码,但我无法弄清楚如何date_range()在正确的断点处生成索引.

from datetime import date
import pandas as pd

start = date('2012-01-15')
end = date('2012-09-20')
# 'M' is month-end, instead I need same-day-of-month
date_range(start, end, freq='M')
Run Code Online (Sandbox Code Playgroud)

我想要的是:

2012-01-15
2012-02-15
2012-03-15
...
2012-09-15
Run Code Online (Sandbox Code Playgroud)

我得到了什么:

2012-01-31
2012-02-29
2012-03-31
...
2012-08-31
Run Code Online (Sandbox Code Playgroud)

我需要一个月大小的块来计算一个月中可变的天数.这可以使用dateutil.rrule:

rrule(freq=MONTHLY, dtstart=start, bymonthday=(start.day, -1), bysetpos=1)
Run Code Online (Sandbox Code Playgroud)

丑陋和难以辨认,但它的工作原理.我怎么能和熊猫一起做这个?我打得既date_range()period_range(),到目前为止,没有运气.

我的实际目标是使用groupby,crosstab和/或resample计算的基础上,周期内各个条目的总和/单元/等各个周期值.换句话说,我想从以下数据转换数据:

                total
2012-01-10 00:01    50
2012-01-15 01:01    55
2012-03-11 00:01    60
2012-04-28 00:01    80

#Hypothetical usage
dataframe.resample('total', how='sum', freq='M', start='2012-01-09', end='2012-04-15') 
Run Code Online (Sandbox Code Playgroud)

                total …
Run Code Online (Sandbox Code Playgroud)

python datetime time-series pandas

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

tkinter optionmenu第一个选项消失了

ttk optionmenu小部件从下拉列表中的所有值开始.选择任何值后,列表中的第一个值将消失,永远不会重新出现......

有谁知道为什么?这是小部件设计的一个特征吗?尝试使用以下内容:

import tkinter.ttk as ttk
import tkinter as tk

a = tk.Tk()

options = ['1', '2', '3']
value = tk.StringVar()

masterframe = ttk.Frame()
masterframe.pack()

dropdown = ttk.OptionMenu(masterframe, value, *options)
dropdown.pack()

a.mainloop()
Run Code Online (Sandbox Code Playgroud)

注意 - 另一个用户在此处提出了相同的问题:OptionMenu在点击时不会显示第一个选项(Tkinter)

他们似乎找到了解决方法,但不明白为什么会发生这种情况.

更新:实际上只有在使用ttk小部件时才会出现此行为.tk小部件工作正常(尽管看起来非常难看).

python tkinter optionmenu ttk

14
推荐指数
2
解决办法
8220
查看次数

Seaborn displot facetgrid 不共享 y 轴

我正在尝试使用绘图函数中的内置 row/col 参数来制作 seaborn 显示网格。

但是,我的某些行和列的值存在很大差异,默认设置是共享x/y轴。

我需要弄清楚把sharey = False和放在哪里sharex = False。我无法sns.displot直接将它们传递给对象,如果我尝试事先制作一个图形,它不会合并到对象中displot

因此,在下面的示例中,我需要将第二行缩放为最大 ~0.5,而不是像 (0,1) 中的图那样 0.7,这会影响y下面所有图的轴比例。

最小可重复示例

tips = sns.load_dataset("tips")
plt.figure(figsize = (6, 6))
sns.displot(tips, x = "tip", multiple = "stack", kind = "kde", bw_adjust=.3, common_norm = False, col = "sex", row = "time")
Run Code Online (Sandbox Code Playgroud)

python plot seaborn

13
推荐指数
1
解决办法
3924
查看次数

pandas groupby删除列

我正在通过操作做一个简单的组,试图比较组的意思.如下所示,我从较大的数据框中选择了特定列,从中删除了所有缺失值.

选定的列和df头

但是当我分组时,我失去了几列:

分组逻辑和结果df

我从来没有遇到过大熊猫的问题,而且我在堆栈溢出上找不到任何类似的东西.有人有任何见解吗?

python dataframe pandas pandas-groupby

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

每个色调带有堆叠条的计数图

我正在寻找一种根据“色调”绘制带有堆叠条的计数图的有效方法。标准色调行为是根据第二列的值将计数拆分为平行条,我正在寻找的是一种将色调条堆叠以便快速比较总数的有效方法。

让我用一个来自泰坦尼克号数据集的例子来解释:

import pandas as pd
import numpy as np
import seaborn as sns
%matplotlib inline

df = sns.load_dataset('titanic')
sns.countplot(x='survived',hue='class',data=df)
Run Code Online (Sandbox Code Playgroud)

提供带有计数图和色调的标准 Seaborn 行为 带有计数图和色调的标准 Seaborn 行为

我正在寻找的是类似于每个色调的堆叠条 每个色调的堆叠条

为了获得最后一张图片,我使用了以下代码

def aggregate(rows,columns,df):
    column_keys = df[columns].unique()
    row_keys = df[rows].unique()

    agg = { key : [ len(df[(df[rows]==value) & (df[columns]==key)]) for value in row_keys]
               for key in column_keys }

    aggdf = pd.DataFrame(agg,index = row_keys)
    aggdf.index.rename(rows,inplace=True)

    return aggdf

aggregate('survived','class',df).plot(kind='bar',stacked=True)
Run Code Online (Sandbox Code Playgroud)

我相信有一些更有效的方法。我知道 seaborn 对堆叠条形不太友好……所以我尝试用我的函数重新排列数据集并使用 matplotlib,但我想还有一种更聪明的方法可以做到这一点。

非常感谢!

python bar-chart pandas stacked-chart seaborn

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

在numpy数组的每一行中随机调整项目

我有一个像下面这样的numpy数组:

Xtrain = np.array([[1, 2, 3],
                   [4, 5, 6],
                   [1, 7, 3]])
Run Code Online (Sandbox Code Playgroud)

我想分别对每行的项进行随机播放,但不希望每行的shuffle相同(如在几个示例中只是随机播放列顺序).

例如,我想要一个如下输出:

output = np.array([[3, 2, 1],
                   [4, 6, 5],
                   [7, 3, 1]])
Run Code Online (Sandbox Code Playgroud)

如何以有效的方式随机随机地随机移动每一行?我的实际np数组超过100000行和1000列.

python arrays numpy

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

Matplotlib 错误:AttributeError:模块“matplotlib”没有属性“rcParams”

我一直在使用 matplotlib 没有任何问题,但昨天我尝试安装另一个使用 matplotlib 的库,因为我遇到了一个无法避免的错误。有人可以帮助我吗?

AttributeError                            Traceback (most recent call last)
<ipython-input-18-b478a6fd18e5> in <module>
      1 import pandas as pd
      2 import numpy as np
----> 3 import matplotlib.pyplot as plt

~\anaconda3\lib\site-packages\matplotlib\pyplot.py in <module>
     47 from cycler import cycler
     48 import matplotlib
---> 49 import matplotlib.colorbar
     50 import matplotlib.image
     51 from matplotlib import _api

~\anaconda3\lib\site-packages\matplotlib\colorbar.py in <module>
     19 
     20 import matplotlib as mpl
---> 21 from matplotlib import _api, collections, cm, colors, contour, ticker
     22 import matplotlib.artist as martist
     23 import …
Run Code Online (Sandbox Code Playgroud)

python matplotlib anaconda

10
推荐指数
1
解决办法
9229
查看次数

用R中的点阵绘制线框和云

我有一个很好的表面,它代表了具有两个独立变量的回归的非线性多部分回归结果.我想将回归预测值绘制为一个漂亮的3D表面,然后将实际值显示为在表面上反弹的点.这将是绘制回归线并将实际值显示为线周围点的3D版本.我无法弄清楚如何用格子做到这一点.我很高兴在R中使用另一个图形库,但我不知道其他人做3D图.

这是我想要做的简化版本:

library(lattice)
#set up some simplified data
x <- seq(-.8, .8, .1)
y <- seq(-.8, .8, .1)
myGrid <- data.frame(expand.grid(x,y))
colnames(myGrid) <- c("x","y")
myGrid$z <- myGrid$x + myGrid$y
noise <- rnorm(length(myGrid$z),.3,.2)
myGrid$z2 <- myGrid$x + myGrid$y + noise
Run Code Online (Sandbox Code Playgroud)

z是我的光滑表面,z2是我的噪点,大部分位于表面之上.所以表面看起来像这样:

wireframe(myGrid$z ~ myGrid$x * myGrid$y, xlab="X", ylab="Y", zlab="Z")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

点云看起来像这样:

cloud(myGrid$z2 ~ myGrid$x * myGrid$y, xlab="X", ylab="Y", zlab="Z")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

是否有可能在一个格子面板中获得这两个?

r wireframe lattice

9
推荐指数
2
解决办法
8915
查看次数

如何使用Python创建历史时间线

所以我在这里看到了一些有帮助的答案,但我的数据集比之前回答的数据集要大。为了让您了解我正在使用的内容,这里有一个完整数据集的链接。我提供了一张尝试解决方案的图片,可以在此链接中找到该解决方案: 示例图片

问题是 1. 这很难阅读,2. 我不知道如何将其展平,使其看起来像传统的时间线。当我尝试处理更大的片段时,这个问题变得更加明显,比如这个,它基本上是不可读的: 基本上是看不懂的。 这是我用来生成这两个代码的代码(我刚刚修改了包含的代码以更改使用整个数据集的哪个部分)。

event = Xia['EnglishName']
begin = Xia['Start']
end = Xia['Finish']
length = Xia['Length']

plt.figure(figsize=(12,6))
plt.barh(range(len(begin)), (end-begin), .3, left=begin)
plt.tick_params(axis='both', which='major', labelsize=15)
plt.tick_params(axis='both', which='minor', labelsize=20)
plt.title('Xia Dynasty', fontsize = '25')
plt.xlabel('Year', fontsize = '20')
plt.yticks(range(len(begin)), "")
plt.xlim(-2250, -1750)
plt.ylim(-1,18)
for i in range(18):
    plt.text(begin.iloc[i] + length.iloc[i]/2, i+.25, event.iloc[i], ha='center', fontsize = '12') 
Run Code Online (Sandbox Code Playgroud)

这段代码半有效,但我更喜欢条形图要么距离更近,要么颜色不同,并且都在相同的 y 值上。我感谢任何和所有的帮助。我已经尝试解决这个问题大约两周了,但遇到了困难。

python matplotlib data-science

9
推荐指数
2
解决办法
1万
查看次数