我正在寻求从中迁移matplotlib到plotly,但似乎plotly没有很好的集成pandas.例如,我正在尝试制作一个指定箱数的加权直方图:
sns.distplot(df.X, bins=25, hist_kws={'weights':df.W.values},norm_hist=False,kde=False)
Run Code Online (Sandbox Code Playgroud)
但我没有找到一个简单的方法来做到这一点plotly.如何以直接的方式从pandas.DataFrame使用plotly中生成数据的直方图?
我使用以下命令在虚拟机上安装了存储桶:
gcsfuse my-bucket /path/to/mount
Run Code Online (Sandbox Code Playgroud)
之后,我可以使用 Pandas 从 Python 中的存储桶中读取文件,但无法写入文件或创建新文件夹。我尝试使用 Python 并使用 sudo 从终端尝试,但出现相同的错误。
我还尝试过使用存储桶中的 key_file:
sudo mount -t gcsfuse -o implicit_dirs,allow_other,uid=1000,gid=1000,key_file=Notebooks/xxxxxxxxxxxxxx10b3464a1aa9.json <BUCKET> <PATH>
Run Code Online (Sandbox Code Playgroud)
当我运行代码时它没有出现错误,但我仍然无法在存储桶中写入。
我也尝试过:
gcloud auth login
Run Code Online (Sandbox Code Playgroud)
但仍然有同样的问题。
我有一本 python 字典
dict = {'Name':value,'Name2':value2,'Name3':value3}
Run Code Online (Sandbox Code Playgroud)
我想从那里创建一个 DataFrame,但如果我尝试这个:
df = pd.DataFrame(dict)
Run Code Online (Sandbox Code Playgroud)
我有两个问题,第一个是字典中并非所有项目都具有相同的值,第二个也是更重要的一个,我想要这种格式的一两列数据框:
名1值
名称1值
名称1值
名称2值
名称2值
NAME3值
NAME3值
NAME3值
NAME3值
而不是:
名称1 [值,值,值]
名称2 [值,值]
Name3 [值,值,值]
我有一个包含大约 90k 个字符串的列表和一个包含多列的数据框,我有兴趣检查列表的字符串是否在 column_1 中,以及它是否在 column_2 中分配了相同的值。
我可以做这个:
for i in range(len(my_list)):
item = list[i]
for j in range(len(df)):
if item == df['column_1'][j]:
df['column_2'][j] = item
Run Code Online (Sandbox Code Playgroud)
但我宁愿避免嵌套循环
我试过这个
for item in my list:
if item in list(df['column _1']):
position = df[df['column_1']==item]].index.values[0]
df['column_2'][position] = item
Run Code Online (Sandbox Code Playgroud)
但我认为这个解决方案更慢更难阅读,这个操作可以通过简单的列表理解来完成吗?
编辑。
第二个解决方案要快得多,大约一个数量级。这是为什么?似乎在这种情况下它必须搜索两次以获得马赫:
这里:
if item in list(df['column _1'])
Run Code Online (Sandbox Code Playgroud)
和这里:
possition = df[df['column_1]=='tem]].index.values[0]
Run Code Online (Sandbox Code Playgroud)
我仍然更喜欢更简单的解决方案。
我正在使用selenium从此页面自动下载csv格式的文件:
https://catalog.data.gov/dataset?tags=crime
这是我正在使用的代码:
profile = webdriver.FirefoxProfile()
profile.set_preference("browser.download.folderList", 2)
profile.set_preference("browser.download.manager.showWhenStarting", False)
profile.set_preference("browser.download.dir", '/home/luis/Desktop/data/')
profile.set_preference("browser.helperApps.neverAsk.saveToDisk", "text/csv")
driver = webdriver.Firefox(firefox_profile=profile)
driver.get(url)
time.sleep(2)
download_button = driver.find_element_by_xpath('//*[@id="content"]/div[2]/div[2]/section[1]/div[2]/ul/li[14]/div/ul/li[1]/a')
download_button.click()
Run Code Online (Sandbox Code Playgroud)
这里设置了下载文件夹:
profile.set_preference("browser.download.dir", '/home/luis/Desktop/data/')
Run Code Online (Sandbox Code Playgroud)
如何选择保存文件的名称?可以是下载时定义的名称吗?
我的意思是这样的:
For name in names:
download_button = driver.find_element_by_xpath('//*[@id="content"]/div[2]/div[2]/section[1]/div[2]/ul/li[14]/div/ul/li[{}]/a'.format(name))
download_button.click()
save_file_as(name)
Run Code Online (Sandbox Code Playgroud) 我想使用spacy和NLP进行在线服务.每次用户发出请求时,我都会调用脚本"my_script.py"
从以下开始:
from spacy.en import English
nlp = English()
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是这两行占用时间超过10秒,是否可以将英语()保留在ram或其他一些选项中以将此加载时间减少到不到一秒?
我正在使用 t-SNE 在具有七个特征的数据集上搜索关系。
我正在使用字典为y绘图上的标签分配颜色:
encoding = {'d0': 0, 'd1': 1, 'd2': 2, 'd3': 3, 'd4': 4, 'd5': 5, 'd6': 6, 'd7': 7}
plt.scatter(X_tsne[:, 0], X_tsne[:, 1], c=y['label'].apply(lambda x: city_encoding[x]))
plt.show()
Run Code Online (Sandbox Code Playgroud)
这里的问题是不清楚哪种颜色对应哪个标签。数据集实际上有 100 多个标签,所以我不想手动处理它。
我创建了一个简单的flask应用,并且正在读取来自python的响应:
response = requests.post(url,data=json.dumps(data), headers=headers )
data = json.loads(response.text)
Run Code Online (Sandbox Code Playgroud)
现在我的问题是,在某些情况下,我想返回400或500条消息响应。到目前为止,我正在这样做:
abort(400, 'Record not found')
#or
abort(500, 'Some error...')
Run Code Online (Sandbox Code Playgroud)
这确实会在终端上打印消息:
但是在API响应中,我不断收到500错误响应:
编辑:
代码的结构如下:
|--my_app
|--server.py
|--main.py
|--swagger.yml
Run Code Online (Sandbox Code Playgroud)
其中server.py具有以下代码:
from flask import render_template
import connexion
# Create the application instance
app = connexion.App(__name__, specification_dir="./")
# read the swagger.yml file to configure the endpoints
app.add_api("swagger.yml")
# Create a URL route in our application for "/"
@app.route("/")
def home():
"""
This function just responds to the browser URL
localhost:5000/
:return: the rendered template "home.html" …Run Code Online (Sandbox Code Playgroud) 我对将tf-idf与FastText库一起使用很感兴趣,但是找到了一种处理ngram的逻辑方法。我已经将tf-idf与SpaCy向量一起使用了,以发现以下示例:
但是对于FastText库,我不太清楚,因为它的粒度不太直观,例如EG
对于一般的word2vec方法,我每个单词都有一个矢量,我可以计算该矢量的词频,并相应地除以其值。
但是对于fastText,同一个单词会有几个n-gram
“听最新新闻摘要”将具有由滑动窗口生成的n-gram,例如:
十个孩子...
这些n-gram由模型内部处理,因此当我尝试时:
model["Listen to the latest news summary"]
Run Code Online (Sandbox Code Playgroud)
我直接得到最终的向量,因此我所需要的是在输入模型之前将文本拆分为n元语法:
model['lis']
model['ist']
model['ten']
Run Code Online (Sandbox Code Playgroud)
然后从那里制作tf-idf,但这似乎都是一种低效的方法,是否存在将tf-idf应用于此类矢量n-gram的标准方法。
我有这个非常简单的代码,它获取字典作为输入并返回字典:
app = FastAPI()
class User(BaseModel):
user_name: dict
@app.post("/")
def main(user: User):
## some processing
return user
Run Code Online (Sandbox Code Playgroud)
我用以下 python 代码调用它:
import requests
import json
import pandas as pd
df = pd.read_csv("myfile.csv")
data = {}
data["user_name"] = df.to_dict()
headers = {'content-type': 'application/json'}
url = 'http://localhost:8000/'
resp = requests.post(url,data=json.dumps(data), headers=headers )
resp
Run Code Online (Sandbox Code Playgroud)
现在,我想做类似的事情,但我不想通过 python 请求发送数据,而是上传本地文件,将其发送到 API 并获取处理后的 .csv 文件。
现在我有以下代码来上传文件:
from typing import Optional
from fastapi import FastAPI
from fastapi import FastAPI, File, UploadFile
from pydantic import BaseModel
from typing import List …Run Code Online (Sandbox Code Playgroud)