假设我有以下代码使用pandas绘制非常简单的东西:
import pandas as pd
values = [[1, 2], [2, 5]]
df2 = pd.DataFrame(values, columns=['Type A', 'Type B'],
index=['Index 1', 'Index 2'])
df2.plot(lw=2, colormap='jet', marker='.', markersize=10,
title='Video streaming dropout by category')
Run Code Online (Sandbox Code Playgroud)
如何在保留使用特定色彩映射的能力的同时轻松设置x和y标签?我注意到plot()
pandas DataFrames 的包装器没有采用任何特定的参数.
我正在使用pyspark,使用spark-csv将大型csv文件加载到数据框中,作为预处理步骤,我需要对其中一列(包含json字符串)中可用的数据应用各种操作.这将返回X值,每个值都需要存储在各自独立的列中.
该功能将在UDF中实现.但是,我不确定如何从该UDF返回值列表并将这些值提供给单个列.下面是一个简单的例子:
(...)
from pyspark.sql.functions import udf
def udf_test(n):
return [n/2, n%2]
test_udf=udf(udf_test)
df.select('amount','trans_date').withColumn("test", test_udf("amount")).show(4)
Run Code Online (Sandbox Code Playgroud)
这产生以下结果:
+------+----------+--------------------+
|amount|trans_date| test|
+------+----------+--------------------+
| 28.0|2016-02-07| [14.0, 0.0]|
| 31.01|2016-02-07|[15.5050001144409...|
| 13.41|2016-02-04|[6.70499992370605...|
| 307.7|2015-02-17|[153.850006103515...|
| 22.09|2016-02-05|[11.0450000762939...|
+------+----------+--------------------+
only showing top 5 rows
Run Code Online (Sandbox Code Playgroud)
将udf在不同的列上返回的两个值(在此示例中)存储的最佳方法是什么?现在他们被键入字符串:
df.select('amount','trans_date').withColumn("test", test_udf("amount")).printSchema()
root
|-- amount: float (nullable = true)
|-- trans_date: string (nullable = true)
|-- test: string (nullable = true)
Run Code Online (Sandbox Code Playgroud) python user-defined-functions apache-spark apache-spark-sql pyspark
我目前有一个点矢量
vector<Point> corners;
Run Code Online (Sandbox Code Playgroud)
我以前存储过给定多边形的角点.鉴于此,我确信这些点形成了一个不包含任何自相交边的简单多边形.但是,在存储这些顶点的过程中,不保留它们彼此连接的顺序.
我现在有一个函数,给定一个点矢量,连接它们并绘制一个封闭的数字.但是,我需要按照需要连接的顺序给这个函数一系列点.任何人都可以提出一种方法,我可以按正确的顺序对这些点进行排序吗?它们形成一个非常简单的凹多边形,而不是凸包.在所有(7)点中找到中心点的算法也会有帮助:)
我想知道是否有一种方法可以在opencv上压缩图像时轻松指定压缩因子,而无需声明虚拟矢量.如果我声明一个向量p(类似于这个讨论),但只包含2个项目,这是imwrite所采用的,我可以进行调用:
vector<int> p;
p[0] = CV_IMWRITE_JPEG_QUALITY;
p[1] = 50; // compression factor
imwrite("compressed.jpg", img, p);
Run Code Online (Sandbox Code Playgroud)
以上工作正常.但是,我想在循环中使用多个压缩因子压缩相同的图像.有没有办法将参数显式传递给imwrite?就像是:
imwrite("compressed.jpg", img, {CV_IMWRITE_JPEG_QUALITY, factor}); // this doesn't work
Run Code Online (Sandbox Code Playgroud)
正如旁注,函数头是:
bool imwrite(const string& filename, const Mat& img, const vector<int>& params=vector<int>());
Run Code Online (Sandbox Code Playgroud)
谢谢!
更新: 激活C++ 0x后,我可以将内联显式定义的向量传递给函数.
我有一个3(或更多)颜色序列存储为RGB值(或相应的十六进制),我想显示如下:
遵循并修改这里的建议我能够有点接近,虽然我不太清楚我是否理解颜色如何作为单个浮点表示.无论如何我可以将RGB /十六进制表示转换为matshow()使用的任何内容吗?或者,是否有更优雅的方式产生上述输出?谢谢!
我在Windows 8上安装了最新的Anaconda Python发行版,我正在尝试安装rpy2软件包.我最初遇到了几个我能够规避的问题,但我现在仍然坚持我正在下面粘贴的一个特定错误.
命令
pip install rpy2
Run Code Online (Sandbox Code Playgroud)
退出并显示以下错误消息:
In file included from .\rpy\rinterface\_rinterface.c:58:0:
.\rpy\rinterface\_rinterface.h:8:15: fatal error: R.h: No such file or
directory
compilation terminated.
error: command 'gcc' failed with exit status 1
Run Code Online (Sandbox Code Playgroud)
有什么建议?Rh的路径包含在我的环境中.
我违反了变量类型如下:
typedef unsigned int color[3];
Run Code Online (Sandbox Code Playgroud)
然后我创建了一个这种类型的向量:
vector<color> RGB;
Run Code Online (Sandbox Code Playgroud)
现在,假设我想将一个新元素推回到这个向量中.什么是正确的语法?我的g ++不会让我这样做:
color temp = {255, 255, 255};
RGB.push_back(temp);
Run Code Online (Sandbox Code Playgroud)
我认为这将是一个很好的语法:(任何建议非常感谢
我有两个或三个具有相同标题的csv文件,并希望在同一个图上绘制彼此重叠的每列的直方图.
下面的代码给出了两个单独的图,每个图包含每个文件的所有直方图.有没有一种紧凑的方法可以使用pandas/matplot lib在同一个图上绘制它们?我想象一下接近这个但是使用数据帧.
码:
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('input1.csv')
df2 = pd.read_csv('input2.csv')
df.hist(bins=20)
df2.hist(bins=20)
plt.show()
Run Code Online (Sandbox Code Playgroud) 我想删除给定文件中以*开头的所有行.例如,以下内容:
* This needs to be gone
But this line should stay
*remove
* this too
End
Run Code Online (Sandbox Code Playgroud)
应该生成这个:
But this line should stay
End
Run Code Online (Sandbox Code Playgroud)
我最终需要做的是以下内容:
到目前为止,我能够通过以下方式解决#1问题:re.sub(r'[.?]|(.*?)', '', fileString)
.我为#2尝试了几件事,但总是最终删除我不想要的东西
解决方案1(没有正则表达式)
>>> f = open('path/to/file.txt', 'r')
>>> [n for n in f.readlines() if not n.startswith('*')]
Run Code Online (Sandbox Code Playgroud)
解决方案2(正则表达式)
>>> s = re.sub(r'(?m)^\*.*\n?', '', s)
Run Code Online (Sandbox Code Playgroud)
谢谢大家的帮助.