我正在使用Flask,但这可能适用于许多类似的框架.
我构建了一个pandas Dataframe,例如
@app.route('/analysis/<filename>')
def analysis(filename):
x = pd.DataFrame(np.random.randn(20, 5))
return render_template("analysis.html", name=filename, data=x)
Run Code Online (Sandbox Code Playgroud)
模板analysis.html看起来像
{% extends "base.html" %}
{% block content %}
<h1>{{name}}</h1>
{{data}}
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
这可行,但输出看起来很糟糕.它不使用换行等,我已经打了data.to_html()和data.to_string()
什么是显示一帧的最简单的方法?
我正在尝试连接到mysql数据库,与选项1一起正常工作:
from sqlalchemy import create_engine
engine = create_engine('mysql://root:root@localhost/lend', echo=True)
cnx = engine.connect()
x = cnx.execute("SELECT * FROM user")
Run Code Online (Sandbox Code Playgroud)
但在这里打破:
from pandas.io import sql
xx = sql.read_frame("SELECT * FROM user", cnx)
cnx.close()
Run Code Online (Sandbox Code Playgroud)
同
AttributeError:'Connection'对象没有属性'rollback'
我将一个简单的Pandas系列转换为json字符串并返回时遇到了一些问题.这是我的尝试
import pandas as pd
f = pd.Series(data=[1.0,2.0,3.0],index=[10,20,30])
x = f.to_json()
a = pd.read_json(x)
Run Code Online (Sandbox Code Playgroud)
这会导致ValueError:如果使用所有标量值,则必须传递索引.
json String x看起来像{"10":1.0,"20":2.0,"30":3.0}
这里缺少什么.请帮忙
我试着理解为什么
print(pd.Timestamp("2015-01-01") - pd.DateOffset(day=1))
Run Code Online (Sandbox Code Playgroud)
不会导致
pd.Timestamp("2014-12-31")
Run Code Online (Sandbox Code Playgroud)
我正在使用Pandas 0.18.我在CET时区内跑.
我需要将数据从html页面发送回我的Python应用程序:
$.post("/test", {x: [1.0,2.0,3.0], y: [2.0, 3.0, 1.0]}, function(dat) {console.log(dat);});
Run Code Online (Sandbox Code Playgroud)
在服务器上:
@app.route('/test', methods=['POST'])
def test():
print request.form.keys()
print dir(request.form)
print request.form["x[]"]
return jsonify({"Mean": 10.0})
Run Code Online (Sandbox Code Playgroud)
令我惊讶的是钥匙
['y[]', 'x[]']
Run Code Online (Sandbox Code Playgroud)
和
print request.form["x[]"]
Run Code Online (Sandbox Code Playgroud)
结果1.
这样做的正确方法是什么?
我处理包含数字和文本的大型数据帧。显然我可以将每列/行存储为一个 sep。我的 mongoDB 中的文档,但我想在加载数据时删除和麻烦。
我考虑过使用 GridFS,它是通过使用 MongoEngine FileField 进行抽象的。与此同时,我想出了一个适合我的解决方案:
import pandas as pd
from mongoengine import Document, StringField, FileField
from io import BytesIO
class Frame(Document):
name = StringField(required=True, max_length=200, unique=True)
data = FileField()
@property
def frame(self):
str_data = BytesIO(self.data.read()).read().decode()
try:
return pd.read_json(str_data, typ="frame")
except ValueError:
return pd.read_json(str_data, typ="series")
def __str__(self):
return "{name}: \n{frame}".format(name=self.name, frame=self.frame)
def put(self, frame):
if self.data:
self.data.replace(frame.to_json().encode())
else:
self.data.new_file()
self.data.write(frame.to_json().encode())
self.data.close()
self.save()
if __name__ == '__main__':
from pydata.config import connect_production
connect_production()
frame = pd.DataFrame(data=[[1,2,4],[3,4,6]], columns=["A","B","C"], index=["X","Y"])
f …Run Code Online (Sandbox Code Playgroud) 我维护一个Github存储库,目前有两个ipython笔记本文件.我的存储库在这里:
https://github.com/tschm/MosekRegression
当我尝试使用nbviewer打开这些文件时,例如使用
nbviewer.ipython.org
和插入
http://nbviewer.ipython.org/urls/github.com/tschm/MosekRegression/blob/master/Data.ipynb
我得到400 Bad Request Error.当我将其作为Gist提供时,该文件很好用.第一项研究似乎表明这是一个许可问题?我打赌我在这里做些蠢事......
非常感谢
托马斯
这是我的数据片段.我想将这个字典转换为带有多索引的系列.这似乎方面似乎有效,但系列中的所有值都是NaN?
d = {(datetime.date(2017, 10, 19), 1026972): 24.91, (datetime.date(2017, 10, 19), 1026973): 10.68, (datetime.date(2017, 10, 19), 1026974): 654.7}
Run Code Online (Sandbox Code Playgroud)
我试过了 pd.Series(d)
有什么提示吗?
我刚开始尝试使用cython,作为第一个练习,我创建了一个函数的以下(重新)实现来计算数组中每个元素的sin.所以这是我的sin.pyx
from numpy cimport ndarray, float64_t
import numpy as np
cdef extern from "math.h":
double sin(double x)
def sin_array(ndarray[float64_t, ndim=1] arr):
cdef int n = len(arr)
cdef ndarray h = np.zeros(n, dtype=np.float64)
for i in range(n):
h[i] = sin(arr[i])
return h
Run Code Online (Sandbox Code Playgroud)
我还为此创建了以下setup.py
from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext
import numpy
ext = Extension("sin", sources=["sin.pyx"])
setup(ext_modules=[ext],
cmdclass={"build_ext": build_ext},
include_dirs=[numpy.get_include()])
Run Code Online (Sandbox Code Playgroud)
所以这会创建我的*.so文件.我将其导入python并创建1000个随机数,例如
import sin
import numpy as np
x = np.random.randn(1000)
%timeit sin.sin_array(x)
%timeit np.sin(x)
Run Code Online (Sandbox Code Playgroud)
Numpy赢了3倍.为什么?我认为对输入数组的类型和维度做出非常明确的假设的函数在这里可以更具竞争力.当然,我也明白numpy是不可思议的聪明,但很有可能我在这里做了一些愚蠢的事......
请注意,本练习的目的是不重写更快的sin函数,而是为我们的一些内部工具创建一些cython包装器,但这是以后的另一个问题......
我试图在散景中的条形图上绘制一条线.我试过了:
p1 = figure()...
p1.renderer.append(Bar(...))
p1.renderer.append(Line(...))
show(p1)
Run Code Online (Sandbox Code Playgroud)
到目前为止,我没有运气.