有没有办法将 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) 我有一个文件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) 我有一个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) 我有以下熊猫数据框:
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 …
出于好奇只是一个愚蠢的问题.
让我们说有一个元素列表
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)
我知道通过查看元素的名称可以很容易地做到这一点,但我想要实现的是程序以某种方式获取元素名称,同时迭代它,然后创建具有相同名称的空字典.可能吗?请指导我完成..
我有一个原始的 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) 我正在尝试使用 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 …
有什么方法可以在熊猫中使用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 ×8
pandas ×4
python-3.x ×3
dataframe ×2
fuzzywuzzy ×1
pivot ×1
plotly ×1
postgresql ×1
sqlalchemy ×1
web-scraping ×1