我正在使用Python 3.4和IPython,并具有以下代码.我无法从给定的URL读取csv文件:
import pandas as pd
import requests
url="https://github.com/cs109/2014_data/blob/master/countries.csv"
s=requests.get(url).content
c=pd.read_csv(s)
Run Code Online (Sandbox Code Playgroud)
我有以下错误
"预期的文件路径名或类文件对象,得到类型"
我怎样才能解决这个问题?
我试图在matplotlib子图环境中将格式设置为两个十进制数.不幸的是,我不知道如何解决这个任务.
为了防止在y轴上使用科学记数法,我ScalarFormatter(useOffset=False)可以在下面的代码片段中看到.我认为我的任务应该通过将更多的选项/参数传递给使用的格式化程序来解决.但是,我在matplotlib的文档中找不到任何提示.
如何设置两位小数或无(两种情况都需要)?遗憾的是,我无法提供样本数据.
- SNIPPET -
f, axarr = plt.subplots(3, sharex=True)
data = conv_air
x = range(0, len(data))
axarr[0].scatter(x, data)
axarr[0].set_ylabel('$T_\mathrm{air,2,2}$', size=FONT_SIZE)
axarr[0].yaxis.set_major_locator(MaxNLocator(5))
axarr[0].yaxis.set_major_formatter(ScalarFormatter(useOffset=False))
axarr[0].tick_params(direction='out', labelsize=FONT_SIZE)
axarr[0].grid(which='major', alpha=0.5)
axarr[0].grid(which='minor', alpha=0.2)
data = conv_dryer
x = range(0, len(data))
axarr[1].scatter(x, data)
axarr[1].set_ylabel('$T_\mathrm{dryer,2,2}$', size=FONT_SIZE)
axarr[1].yaxis.set_major_locator(MaxNLocator(5))
axarr[1].yaxis.set_major_formatter(ScalarFormatter(useOffset=False))
axarr[1].tick_params(direction='out', labelsize=FONT_SIZE)
axarr[1].grid(which='major', alpha=0.5)
axarr[1].grid(which='minor', alpha=0.2)
data = conv_lambda
x = range(0, len(data))
axarr[2].scatter(x, data)
axarr[2].set_xlabel('Iterationsschritte', size=FONT_SIZE)
axarr[2].xaxis.set_major_locator(MaxNLocator(integer=True))
axarr[2].set_ylabel('$\lambda$', size=FONT_SIZE)
axarr[2].yaxis.set_major_formatter(ScalarFormatter(useOffset=False))
axarr[2].yaxis.set_major_locator(MaxNLocator(5))
axarr[2].tick_params(direction='out', labelsize=FONT_SIZE)
axarr[2].grid(which='major', alpha=0.5)
axarr[2].grid(which='minor', alpha=0.2)
Run Code Online (Sandbox Code Playgroud) 我正在做一些模拟.通过变量参数(rpm仅在这种情况下)进行系统分析,并将结果数据帧的每一个最后一行附加results_df到一个汇总数据帧,该数据帧df包含了对我的系统的baviour依赖于变化rpm.
为了获得适当的绘图和数据分析索引,我将列表中的各种值(此处rpm)转换为pandas系列,ser并将此系列与df包含我感兴趣的结果的汇总数据框连接起来.
由于我感兴趣的每个计算的结果只是每个计算的最后一行,我results_df通过使用从结果数据框中提取这些数据.tail(1).
到目前为止我所做的工作如下所示:
rpm = [0.25, 0.3, 0.5, 0.75, 1.0, 1.5, 2.0]
ser = pd.Series(rpm, name='rpm')
df = pd.DataFrame()
df_list = list()
for i, val in enumerate(rpm):
results_df = get_some_data_from_somwhere()
df_list.append(results_df.tail(1))
df = df.append(df_list, ignore_index=True)
df = pd.concat([df, ser], axis=1)
df.set_index('rpm', inplace=True)
with open('foo.csv', 'w') as f:
data.to_csv(f, index=True, header=True, decimal=',', sep=' ', float_format='%.3f')
Run Code Online (Sandbox Code Playgroud)
我得到的这个csv文件有以下格式:
rpm cooling_inner heating_inner cooling_outlet …Run Code Online (Sandbox Code Playgroud) 我正在运行一个一直为我工作的代码.这次我在2个.csv文件上运行它:"data"(24 MB)和"data1"(475 MB)."data"有3列,每列约680000个元素,而"data1"有3列,每列33000000个元素.当我运行代码时,经过大约5分钟的处理后,我就会被"杀死:9".如果这是一个内存问题,如何解决呢?欢迎任何建议!
这是代码:
import csv
import numpy as np
from collections import OrderedDict # to save keys order
from numpy import genfromtxt
my_data = genfromtxt('data.csv', dtype='S',
delimiter=',', skip_header=1)
my_data1 = genfromtxt('data1.csv', dtype='S',
delimiter=',', skip_header=1)
d= OrderedDict((rows[2],rows[1]) for rows in my_data)
d1= dict((rows[0],rows[1]) for rows in my_data1)
dset = set(d) # returns keys
d1set = set(d1)
d_match = dset.intersection(d1) # returns matched keys
import sys
sys.stdout = open("rs_pos_ref_alt.csv", "w")
for row in my_data:
if row[2] in d_match:
print [row[1], row[2]] …Run Code Online (Sandbox Code Playgroud) 我正在使用OpenCV(opencv-pythonMac OS上的软件包版本3.3.0)开始我的第一步.在内部使用OpenCV jupyter notebook并通过matplotlib绿色图像而不是灰度图像显示灰度图像.
%matplotlib inline
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['figure.figsize'] = (8.0, 8.0)
img = cv.imread('IMG_20171212_222022.jpg', cv.IMREAD_GRAYSCALE)
plt.imshow(img)
Run Code Online (Sandbox Code Playgroud)
你知道这是从哪里来的吗?这是一个错误还是想要的行为?
为了处理所有可能的auth/错误,Firebase 可以返回到以某种方式无效的登录名,我正在寻找所有auth/错误的完整列表。
我可以在使用 Swift 的 iOS 中找到这样一个列表,但不能为 Web API 找到这样的列表,无论是在旧文档中还是在新文档中。
有人知道auth/列出所有Web API 错误的资源吗?还是不需要这样的列表,因为我的错误处理方法没有很好地设置?
示例片段:
firebase.auth().createUserWithEmailAndPassword(account.mail, account.password).catch(function(error) {
// TODO: Notify user about error
var errorCode = error.code;
var errorMessage = error.message;
console.log(errorCode)
console.log(errorMessage)
if (errorCode === 'auth/email-already-in-use') {
console.log('Mail in use')
$state.go('register.mail_in_use')
}
});
Run Code Online (Sandbox Code Playgroud) 我编写了自己的模块,其结构如下:
mymodule/
??? __init__.py
??? part1.py
??? part2.py
??? part3.py
??? part4.py
Run Code Online (Sandbox Code Playgroud)
为了测试我的模块,我使用的是IPython和/或jupyter笔记本(以前的Ipython Notebook).像往常一样我做模块导入
import mymodule
Run Code Online (Sandbox Code Playgroud)
假设我编辑了一些代码,part2.py并希望使用我的模块的更新版本.首先,我认为只需重新导入模块即可import mymodule完成工作,但事实并非如此.要完全重新加载模块,我必须关闭IPython的shell或重新启动jupyter的内核并通过导入再次启动mymodule.
但是,在提供文档时,IPython提供了一个自动更新函数autoreload,该函数提供了不同的模式,可以按如下方式激活:
%load_ext autoreload
%autoreload 1
%aimport mymodule
Run Code Online (Sandbox Code Playgroud)
使用我的两个片段,我这样导入mymodule:
%load_ext autoreload
%autoreload 1
%aimport mymodule
import mymodule
# let's do something with the module here
Run Code Online (Sandbox Code Playgroud)
然而,即使有激活autoreload 1或autoreload 2既不IPython的也不jupyter在做什么,我希望他们做的,我还是要退出的IPython的壳或重新启动jupyter的内核,以便使用编辑的代码的part2.py这部分mymodule.
我究竟做错了什么?似乎我没有明白这应该如何运作.
我的列表看起来像这样
top = [('a',1.875),('c',1.125),('d',0.5)]
Run Code Online (Sandbox Code Playgroud)
有人可以帮我绘制条形图,其中x轴为a,c,d和y轴值为1.875,1.125,0.5?
我尝试使用以下代码进行绘图.
import numpy as np
import matplotlib.pyplot as plt
top = [('a',1.875),('c',1.125),('d',0.5)]
labels, values = zip(*top)
indexes = np.arange(len(labels))
width = 1
plt.bar(indexes, values, width)
plt.xticks(indexes + width * 0.5, labels)
plt.savefig('netscore.png')
Run Code Online (Sandbox Code Playgroud)
我可以绘制条形图,但图表中的y轴值是错误的.
我计划在docker环境中使用LaTeX来生成基于服务器的PDF报告。
在当前的测试系统环境中,我正在使用来自集线器的docker容器,它似乎运行得很好。
但是,如前所述,容器的dockerfile容器是基于Ubuntu的,由于Ubuntu的系统开销,与我真正需要的功能相比,这导致了相对较大的容器大小。
我认为我可以摆脱Docker Inc.的不必要系统开销,只需使用Alpine Linux而不是Ubuntu即可。
不幸的是,我在Alpine的存储库中找不到任何LaTeX软件包。我将基于非docker的Alpine系统安装为虚拟机并尝试:
apk update
apk search -v --description 'latex'
Run Code Online (Sandbox Code Playgroud)
找不到任何相关的软件包。除此之外,我无法使用Google找到有关LaTeX软件包的更多信息。
那么,有没有像官方存储库那样为Alpine提供LaTeX,或者有没有办法在Alpine中使用例如Debian / Ubuntu软件包?
更新:
有texlive可用的软件包。但是,正如这里讨论的那样,这似乎已经被打破了...
由于链接断开而更新:
上面提供的链接已断开。软件包概述的新链接在此处。
我正在使用pathlib.glob()和pathlib.rglob()分别匹配目录及其子目录中的文件。目标文件都是小写.txt和大写.TXT文件。从文件系统读取相应的文件路径,如下所示:
import pathlib
directory = pathlib.Path()
files_to_create = ['a.txt', 'b.TXT']
suffixes_to_test = ['*.txt', '*.TXT']
for filename in files_to_create:
filepath = directory / filename
filepath.touch()
for suffix in suffixes_to_test:
files = [fp.relative_to(directory) for fp in directory.glob(suffix)]
print(f'{suffix}: {files}')
Run Code Online (Sandbox Code Playgroud)
大部分代码库是在 Windows 10 计算机(运行 Python 3.7.4)上开发的,现在已转移到 macOS Monterey 12.0.1(运行 Python 3.10.1)。
在 Windows 上,两个文件a.txt和b.TXT都匹配模式:
*.txt: [WindowsPath('a.txt'), WindowsPath('b.TXT')]
*.TXT: [WindowsPath('a.txt'), WindowsPath('b.TXT')]
Run Code Online (Sandbox Code Playgroud)
相比之下,macOS 只有一个文件与每种模式匹配:
*.txt: [PosixPath('a.txt')]
*.TXT: [PosixPath('b.TXT')]
Run Code Online (Sandbox Code Playgroud)
因此,我假设 macOS 文件系统可能区分大小写,而 Windows 则不区分大小写。根据 …
python ×8
csv ×3
matplotlib ×3
pandas ×2
alpine-linux ×1
dictionary ×1
docker ×1
firebase ×1
glob ×1
import ×1
indexing ×1
ipython ×1
javascript ×1
jupyter ×1
latex ×1
opencv ×1
pathlib ×1
pdflatex ×1
python-3.x ×1
request ×1
scipy ×1
ubuntu ×1