小编Ama*_*ngh的帖子

Plotly如何将x轴移动到顶部,y轴移动到右侧?

有没有办法将 Plotly-plot 的 xtick 标签移动到图的“顶部”
,将 ytick 标签移动到图的“右侧”?

在此输入图像描述

在上图中,我基本上想将 xtick 标签移至顶部,将 ytick 标签移至右侧。我知道这不是首选方式,但我只是想知道这是否可能。

这是一个示例代码,用于重新构建上面的图,

import plotly.graph_objects as go


fig = go.Figure()

fig.add_trace(go.Bar(
    x=["Apples", "Oranges", "Watermelon", "Pears"],
    y=[3, 2, 1, 4]
))

fig.update_layout(
    autosize=False,
    width=500,
    height=500,
    yaxis=dict(
        title_text="Y-axis Title",
        ticktext=["Very long label", "long label", "3", "label"],
        tickvals=[1, 2, 3, 4],
        tickmode="array",
        titlefont=dict(size=30),
    )
)

fig.update_yaxes(automargin=True)

fig.show()
Run Code Online (Sandbox Code Playgroud)

python plotly plotly-python

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

多行 jsons 的 pandas read_json 返回 JSONReader 而不是数据帧

我有一个文件file1.json,其内容如下(每个字典在单独的行中):

{"a":1,"b":2}
{"c":3,"d":4}
{"e":9,"f":6}
.
.
.
{"u":31,"v":23}
{"w":87,"x":46}
{"y":98,"z":68}
Run Code Online (Sandbox Code Playgroud)

我想将此文件加载到 pandas 数据框中,所以这就是我所做的:

df = pd.read_json('../Dataset/file1.json', orient='columns', lines=True, chunksize=10)
Run Code Online (Sandbox Code Playgroud)

但这不是返回数据帧而是返回 JSONReader。

[IN]: df
[OUT]: <pandas.io.json.json.JsonReader at 0x7f873465bd30>
Run Code Online (Sandbox Code Playgroud)

这是正常现象,还是我做错了什么?如果这就是当单个 json 文件中有多个字典(没有任何逗号分隔)并且每个字典在单独的行中时 read_json() 应该如何表现,那么我如何才能最好地将它们放入数据帧中?

编辑:如果我chunksize从 read_json() 中删除参数,这就是我得到的:

[IN]: df = pd.read_json('../Dataset/file1.json', orient='columns', lines=True)
[OUT]: ValueError: Expected object or value
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

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

AttributeError:'Series'对象没有属性'notna'

我有一个csv文件,其中包含多个包含空字符串的列.在将csv读入pandas数据帧后,空字符串将转换为NaN.

现在我想将一个字符串追加tag-到列中已经存在的字符串,但只包含那些在其中有一些值的字符串而不是那些带有NaN的字符串

这就是我想要做的:

with open('file1.csv','r') as file:
    for chunk in pd.read_csv(file,chunksize=1000, header=0, names=['A','B','C','D'])
        if len(chunk) >=1:
            if chunk['A'].notna:
                chunk['A'] = "tag-"+chunk['A'].astype(str)
            if chunk['B'].notna:
                chunk['B'] = "tag-"+chunk['B'].astype(str)
            if chunk['C'].notna:
                chunk['C'] = "tag-"+chunk['C'].astype(str)
            if chunk['D'].notna:
                chunk['D'] = "tag-"+chunk['D'].astype(str)
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

AttributeError: 'Series' object has no attribute 'notna'
Run Code Online (Sandbox Code Playgroud)

我想要的最终输出应该是这样的:

A,B,C,D
tag-a,tab-b,tag-c,
tag-a,tag-b,,
tag-a,,,
,,tag-c,
,,,tag-d
,tag-b,,tag-d
Run Code Online (Sandbox Code Playgroud)

python dataframe python-3.x pandas

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

通过删除一些标头并重命名一些索引来旋转 pandas

我有以下熊猫数据框:

    count  event      date
0    1544  'strike'   2016-11-01
1     226  'defense'  2016-11-01
2    1524  'strike'   2016-12-01
3     246  'defense'  2016-12-01
4    1592  'strike'   2017-01-01
5     245  'defense'  2017-01-01
Run Code Online (Sandbox Code Playgroud)

我想以这样的方式旋转/转换它,最终输出如下所示:

event     2016-11-01 2016-12-01 2017-01-01 2017-02-01 2017-03-01                                                                     
'strike'        1544       1524       1592       1608       1654   
'defense'        226        246        245        210        254
Run Code Online (Sandbox Code Playgroud)

但我现在在旋转时得到的是这样的:

                        count          count            count           count             count\
date          2016-11-01 2016-12-01 2017-01-01 2017-02-01 2017-03-01   
event                                                                  
'strike'            1544       1524       1592       1608       1654   
'defense'            226        246        245        210        254   
Run Code Online (Sandbox Code Playgroud)

有什么方法可以删除event索引名称前面的整个空行并将date索引名称重命名为其event索引名称,并删除count …

python pivot pandas

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

创建一个名称与列表中项目名称相同的变量

出于好奇只是一个愚蠢的问题.

让我们说有一个元素列表

fruits_lst = ['apples','oranges','bananas','guavas']
Run Code Online (Sandbox Code Playgroud)

现在可以创建单独的单独词典,但名称是列表中元素的名称吗?

期望的结果:

apples=dict()
oranges=dict()
bananas=dict()
guavas=dict()
Run Code Online (Sandbox Code Playgroud)

我知道通过查看元素的名称可以很容易地做到这一点,但我想要实现的是程序以某种方式获取元素名称,同时迭代它,然后创建具有相同名称的空字典.可能吗?请指导我完成..

python python-3.x

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

在 postgresql 上从 sqlalchemy 执行原始 sql 查询

我有一个原始的 sql 查询,它是:

select distinct(user_id) from details_table where event_id in (29,10) and user_id in (7,11,24,45) and epoch_timestamp >= 1433116800 and epoch_timestamp <= 1506816000;
Run Code Online (Sandbox Code Playgroud)

这在psql收益:

 user_id 
---------
       7
      24
(2 rows)
Run Code Online (Sandbox Code Playgroud)

现在,当我通过 sqlalchemy 运行这个原始 sql 查询时,我得到了一个sqlalchemy.engine.result.ResultProxy对象作为响应,而不是上面的结果。我现在使用的代码如下:

from flask import current_app
sql_query = text(select distinct(user_id) from details_table where event_id in (29,10) and user_id in (7,24) and epoch_timestamp >= 1433116800 and epoch_timestamp <= 1506816000;)

filtering_users = db.get_engine(current_app, bind='<my_binding>')\
                    .execute(sql_query)
print(type(filtering_users))
# <class 'sqlalchemy.engine.result.ResultProxy'>
print(filtering_users)
# <sqlalchemy.engine.result.ResultProxy object at 0x7fde74469550> …
Run Code Online (Sandbox Code Playgroud)

python postgresql sqlalchemy flask-sqlalchemy

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

Python BeautifulSoup 提取特定标签后面的文本

我正在尝试使用 beautifulsoup 和 python 从网页中提取信息。我想提取特定标签下方的信息。为了知道它是否是正确的标签,我想对其文本进行比较,然后在下一个直接标签中提取文本。
举例来说,如果以下内容是 HTML 页面源代码的一部分,

<div class="row">
    ::before
    <div class="four columns">
        <p class="title">Procurement type</p>
        <p class="data strong">Services</p>
    </div>
  <div class="four columns">
      <p class="title">Reference</p>
      <p class="data strong">ANAJSKJD23423-Commission</p>
  </div>
  <div class="four columns">
      <p class="title">Funding Agency</p>
      <p class="data strong">Health Commission</p>
  </div>
  ::after
</div>
<div class="row">
    ::before
    ::after
</div>
<hr>
<div class="row">
    ::before
    <div class="twelve columns">
        <p class="title">Countries</p>
        <p class="data strong">
            <span class>Belgium</span>
            ", "
            <span class>France</span>
            ", "
            <span class>Luxembourg</span>
        </p>
        <p></p>
    </div>
    ::after
</div>
Run Code Online (Sandbox Code Playgroud)

我想检查是否<p class="title">具有文本值,Procurement …

python beautifulsoup web-scraping python-3.x

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

在熊猫中执行模糊字符串匹配的更快方法

有什么方法可以在熊猫中使用fuzzywuzzy来加速模糊字符串匹配。


我有一个数据框,extra_names它的名称我想与另一个数据框运行模糊匹配names_df

>> extra_names.head()

     not_matching
0 Vij Sales
1 Crom Electronics 
2 REL Digital
3 Bajaj Elec
4 Reliance Digi

>> len(extra_names)
6500

>> names_df.head()

         names   types
0 Vijay Sales        1
1 Croma Electronics  1
2 Reliance Digital   2
3 Bajaj Electronics  2
4 Pai Electricals    2

>> len(names_df)
250
Run Code Online (Sandbox Code Playgroud)

截至目前,我正在使用以下代码运行逻辑,但它需要永远完成。

choices = names_df['names'].unique().tolist()

def fuzzy_match(row):
    best_match = process.extractOne(row, choices)
    return best_match[0], best_match[1] if best_match else '',''

%%timeit
extra_names['best_match'], extra_names['match%'] = extra_names['not_matching'].apply(fuzzy_match)
Run Code Online (Sandbox Code Playgroud)

当我发布这个问题时,查询仍在运行。有没有办法加快这个模糊字符串匹配过程?

python fuzzy-comparison pandas fuzzywuzzy

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