小编aso*_*uin的帖子

Seaborn - 根据色调名称更改条形颜色

我正在使用seabornpandas从不同(但相关)的数据创建一些条形图.这两个数据集共享一个用作a的公共类别hue,因此我想确保在这两个图中该类别的条形颜色匹配.我怎么能这样做?

一个基本的例子如下:

import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
sns.set_style('darkgrid')
fig, ax = plt.subplots()

a = pd.DataFrame({'Program': ['A', 'A', 'B', 'B', 'Total', 'Total'],
                  'Scenario': ['X', 'Y', 'X', 'Y', 'X', 'Y'],
                  'Duration': [4, 3, 5, 4, 9, 7]})

g = sns.barplot(data=a, x='Scenario', y='Duration',
                hue='Program', ci=None)
plt.tight_layout()
plt.savefig('3 progs.png')

plt.clf()

b = pd.DataFrame({'Program': ['A', 'A', 'B', 'B', 'C', 'C', 'Total', 'Total'],
                  'Scenario': ['X', 'Y', 'X', 'Y', 'X', 'Y', 'X', 'Y'],
                  'Duration': …
Run Code Online (Sandbox Code Playgroud)

python seaborn

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

Python:如何使用SKlearn使用多项Logistic回归

我有一个测试数据集和训练数据集,如下所示.我提供了带有最小记录的样本数据,但我的数据超过了1000条记录.这里E是我需要使用算法预测的目标变量.它只有四个类别,如1,2,3,4.它只能采用这些值中的任何一个.

培训数据集:

A    B    C    D    E
1    20   30   1    1
2    22   12   33   2
3    45   65   77   3
12   43   55   65   4
11   25   30   1    1
22   23   19   31   2
31   41   11   70   3
1    48   23   60   4
Run Code Online (Sandbox Code Playgroud)

测试数据集:

A    B    C    D    E
11   21   12   11
1    2    3    4
5    6    7    8 
99   87   65   34 
11   21   24   12
Run Code Online (Sandbox Code Playgroud)

由于E只有4个类别,我想用多项Logistic回归(1 vs Rest Logic)预测这个.我正在尝试使用python实现它.

我知道在变量中设置这些目标所需的逻辑,并使用算法来预测这些值中的任何一个:

output = …
Run Code Online (Sandbox Code Playgroud)

python data-analysis scikit-learn logistic-regression

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

matplotlib - 在图例中包装文本

我目前正在尝试pandas通过matplotlib/绘制一些数据seaborn,但是我的一个专栏标题特别长并且延伸了情节。考虑以下示例:

import random

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_style('darkgrid')

random.seed(22)
fig, ax = plt.subplots()

df = pd.DataFrame({'Year': [2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016],
                   'One legend label': [random.randint(1,15) for _ in range(10)],
                   'A much longer, much more inconvenient, annoying legend label': [random.randint(1, 15) for _ in range(10)]})

df.plot.line(x='Year', ax=ax)
ax.legend(bbox_to_anchor=(1, 0.5))
fig.savefig('long_legend.png', bbox_inches='tight')
Run Code Online (Sandbox Code Playgroud)

这会产生以下图表: 带有广泛图例的图表

有什么方法可以将图例条目设置为在字符或长度上换行?textwrap在绘制之前,我尝试使用重命名 DataFrame 列,如下所示:

import textwrap
[...]
renames = …
Run Code Online (Sandbox Code Playgroud)

python matplotlib pandas

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

tkinter - 为颜色选择器定义“自定义颜色”

我目前正在项目中使用colorchooserfrom 来tkinter允许用户选择自定义颜色。至少,可以通过以下方式创建(在 Python 3.x 中)

from tkinter import colorchooser

cp = colorchooser.askcolor()
Run Code Online (Sandbox Code Playgroud)

当此窗口出现时(至少在 Windows 中),有一个名为“自定义颜色”的部分

tkinter 颜色选择器窗口

有什么方法可以用我选择的颜色预先填充此部分吗?

python tk-toolkit tkinter python-3.x

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

标题和副标题对齐不一致

我试图同时使用两者ax.set_title()并将plt.suptitle()标题和副标题合并到图表中,但两者似乎不具有相同的对齐方式。例如,以下内容:

import matplotlib.pyplot as plt

fig, ax = plt.subplots()

cats = ('One', 'Two')
vals = (12, 4) 

ax.barh(cats, vals, align='center')
plt.suptitle('Title')
ax.set_title('Title')
plt.show()
Run Code Online (Sandbox Code Playgroud)

给我们以下未对齐的标题:

带有短 y 标签的标题未对齐

我怎样才能让这两个标题正确对齐?ax.title我认为这可能与对齐轴和对齐图形有关plt.suptitle,但测试更长的 y 标签似乎不会影响偏移量:

fig, ax = plt.subplots()

cats = ('One million tiny engines running at one hundred miles per hour', 'Two')
vals = (12, 4) 

ax.barh(cats, vals, align='center')
plt.suptitle('Title')
ax.set_title('Title')
plt.show()
Run Code Online (Sandbox Code Playgroud)

带有长 y 标签的标题未对齐

python matplotlib

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

拆分和转换 pandas 中的字符串列

我正在处理一个软件的输出,该软件在单列中提供 x、y、z 三元组的坐标。有什么方法可以将字符串分成三个独立的部分并一次性转换为浮点数吗?例如,我知道我可以执行以下操作:

import pandas as pd

df = pd.DataFrame({'ID': {0: 3864, 1: 3864, 2: 3864, 3: 3864, 4: 3864},
                   'COORDFRONT': {0: '787.547 238.639 0.000', 1: '787.141 238.847 0.000', 2: '786.729 239.057 0.000', 3: '786.310 239.271 0.000', 4: '785.886 239.488 0.000'},
                   'COORDREAR': {0: '803.545 230.467 0.000', 1: '803.139 230.675 0.000', 2: '802.727 230.885 0.000', 3: '802.309 231.099 0.000', 4: '801.884 231.316 0.000'}})

df['Front_x'], df['Front_y'], df['Front_z'] = df['COORDFRONT'].str.split(' ').str
Run Code Online (Sandbox Code Playgroud)

分离出三个字符串,但尝试例如

df['COORDFRONT'].str.split(' ').astype(float)
Run Code Online (Sandbox Code Playgroud)

返回一个ValueError.

python pandas

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

Seaborn - 从 DataFrame 直方图中删除间距

我正在尝试从seaborn通过该DataFrame.hist方法启用的 DataFrame 生成直方图,但我不断发现在直方图本身的任一侧添加了额外的空间,如下图中的红色箭头所示: 带有额外间距的直方图

如何删除这些空格?重现此图的代码如下:

import seaborn as sns
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

from random import seed, choice
seed(0)

df = pd.DataFrame([choice(range(250)) for _ in range(100)], columns=['Values'])

bins = np.arange(0, 260, 10)

df['Values'].hist(bins=bins)
plt.tight_layout()
plt.show()
Run Code Online (Sandbox Code Playgroud)

python pandas seaborn

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

Pandas DataFrame to HTML:格式化值以显示居中

我有一个pandas DataFrame并且正在使用该DataFrame.to_html方法生成一个表格,我可以在 HTML 电子邮件中发送。我只是希望某些列中的值居中,但也想知道一般如何将格式应用于表格。我曾尝试应用此处找到的文档以及在使用df.style之前使用,to_html如下所示:

df.style.set_properties(**{'text-align':'center'})
Run Code Online (Sandbox Code Playgroud)

但我仍然让我的所有值左对齐(除了标题,它们居中)。

将所有列值(或子集)居中的正确方法是什么,还有哪些其他可用于格式化的选项?(例如加粗文本、更改背景或边框颜色等)

此外,应该在什么阶段应用这种格式?在to_html我尝试使用的方法内或之前df.style?谢谢!

html python dataframe python-3.x pandas

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

如何获取包含多个关键字的推文数据

我正在尝试使用这些典型代码来积累推文数据。如您所见,我尝试跟踪包含“UniversalStudios”、“Disneyland”或“Los Angeles”的推文。但事实上,我真正想要的是包含这些关键词“UniversalStudios”、“迪士尼乐园”和“洛杉矶”的推文。谁能告诉我如何实现这一目标?

非常感谢提前:)

#This is a basic listener that just prints received tweets to stdout.
class StdOutListener(StreamListener):

    def on_data(self, data):
        all_data = json.loads(data)
        tweet = TextBlob(all_data["text"])

        #Add the 'sentiment data to all_data
        #all_data['sentiment'] = tweet.sentiment

        #print(tweet)
        #print(tweet.sentiment)

        # Open json text file to save the tweets
        with open('tweets.json', 'a') as tf:
            # Write a new line
            tf.write('\n')

            # Write the json data directly to the file
            json.dump(all_data, tf)
            # Alternatively: tf.write(json.dumps(all_data))
        return True

    def on_error(self, status):
        print (status)


if __name__ …
Run Code Online (Sandbox Code Playgroud)

python twitter stream tweepy python-3.x

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