我想要元素方面的逻辑OR运算符.我知道"或"本身并不是我想要的.
我知道AND对应于&和不对~.但是OR怎么样?
python boolean-logic logical-operators boolean-operations pandas
我试图在特定范围内制作一个histgram,但是matplotlib.pyplot.hist()函数会将范围裁剪到带有条目的区域.玩具示例:
import numpy as np
import matplotlib.pyplot as plt
x = np.random.uniform(-100,100,1000)
nbins = 100
xmin = -500
xmax = 500
fig = plt.figure();
ax = fig.add_subplot(1, 1, 1)
ax.hist(x, bins=nbins,range=[xmin,xmax])
plt.show()
Run Code Online (Sandbox Code Playgroud)
给出范围为[-100,100]的图.为什么范围不是[-500,500]?
(我正在使用Enthought Canopy 1.4而且抱歉,但我没有足够高的代表来发布情节图像.)
我正在尝试用一种腌制DataFrame
import pandas as pd
from pandas import DataFrame
data = pd.read_table('Purchases.tsv',index_col='coreuserid')
data.to_pickle('Purchases.pkl')
Run Code Online (Sandbox Code Playgroud)
我已经运行了一段时间的"数据"并且没有任何问题所以我知道这不是数据损坏问题.我想的可能是语法,但我尝试了很多变种.我犹豫是否给出了整个错误消息,但它结束于:
\pickle.pyc in to_pickle(obj, path)
13 """
14 with open(path, 'wb') as f:
15 pkl.dump(obj, f, protocol=pkl.HIGHEST_PROTOCOL)
SystemError: error return without exception set
Run Code Online (Sandbox Code Playgroud)
如果我打电话,则会创建Purchases.pkl文件
data = pd.read_pickle('Purchases.pkl')
Run Code Online (Sandbox Code Playgroud)
我得到了EOFError.我正在使用Canopy 1.4所以pandas 0.13.1应该是最近才能拥有此功能.
我正在尝试为pandas.DataFrame的两列创建一个配置文件图.我不希望这是直接在熊猫中,但似乎在matplotlib中也没有.我搜索过,除了rootpy之外的任何软件包都找不到它.在我花时间自己写这篇文章之前,我想我会问是否有一个包含配置文件直方图的小包,也许是用不同名称知道它们的地方.
如果您不知道"profile histogram"的含义,请查看ROOT实现.http://root.cern.ch/root/html/TProfile.html
提前抱歉,如果这是一个有点长的啰嗦,但如果我把它减少太多,问题就会丢失.我正在尝试在pandas和matplotlib之上创建一个模块,这将使我能够创建类似于scatter_matrix的配置文件图和配置文件矩阵.我很确定我的问题归结为我需要从Profile()返回什么对象,以便我可以处理Profile_Matrix()中的Axes操作.然后问题是什么返回形式Profile_Matrix()所以我可以编辑子图.
我的模块(ProfileModule.py)从https://github.com/pydata/pandas/blob/master/pandas/tools/plotting.py借了很多,看起来像:
import pandas as pd
from pandas import Series, DataFrame
import numpy as np
import matplotlib.pyplot as plt
def Profile(x,y,nbins,xmin,xmax):
df = DataFrame({'x' : x , 'y' : y})
binedges = xmin + ((xmax-xmin)/nbins) * np.arange(nbins+1)
df['bin'] = np.digitize(df['x'],binedges)
bincenters = xmin + ((xmax-xmin)/nbins)*np.arange(nbins) + ((xmax-xmin)/(2*nbins))
ProfileFrame = DataFrame({'bincenters' : bincenters, 'N' : df['bin'].value_counts(sort=False)},index=range(1,nbins+1))
bins = ProfileFrame.index.values
for bin in bins:
ProfileFrame.ix[bin,'ymean'] = df.ix[df['bin']==bin,'y'].mean()
ProfileFrame.ix[bin,'yStandDev'] = df.ix[df['bin']==bin,'y'].std()
ProfileFrame.ix[bin,'yMeanError'] = ProfileFrame.ix[bin,'yStandDev'] / np.sqrt(ProfileFrame.ix[bin,'N'])
fig = plt.figure();
ax = …Run Code Online (Sandbox Code Playgroud) 我感兴趣的是有一种简单的方法可以将mysqldump导入Pandas.
我有一些小的(~110MB)表,我想将它们作为DataFrames.
我想避免将数据放回数据库,因为这需要安装/连接到这样的数据库.我有.sql文件,并希望将包含的表导入Pandas.是否有任何模块可以执行此操作?
如果版本控制很重要.sql文件全部列出"MySQL dump 10.13 Distrib 5.6.13,for Win32(x86)"作为生成转储的系统.
我在没有数据库连接的计算机上本地工作.我的工作的正常流程是从第三方获得.tsv,.csv或json,并做一些将被回馈的分析.一个新的第三方以.sql格式提供了所有数据,这打破了我的工作流程,因为我需要大量的开销才能将其转换为我的程序可以作为输入的格式.我们最终要求他们以不同的格式发送数据,但出于业务/声誉的原因,他们希望首先寻找一个解决方案.
编辑:下面是两个表的示例MYSQLDump文件.
/*
MySQL - 5.6.28 : Database - ztest
*********************************************************************
*/
/*!40101 SET NAMES utf8 */;
/*!40101 SET SQL_MODE=''*/;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`ztest` /*!40100 DEFAULT CHARACTER SET latin1 */;
USE `ztest`;
/*Table structure for table `food_in` */
DROP TABLE IF EXISTS `food_in`;
CREATE TABLE `food_in` …Run Code Online (Sandbox Code Playgroud) 有没有办法在 pandas.DataFrame.plot 中设置标记样式?所有其他选项都可以通过设置种类来使用。我想要一个带有误差条的标记,但只需要一条带有误差条的线。如果我通过函数 errorbar 来做到这一点,我会设置 fmt='.'
当您在同一图形上绘制多个图形时,大多数plot方法(例如plot()和errorbar)会自动更改为color_palette中的下一个颜色。由于某些原因,fill_between()并非如此。我知道我可以对此进行硬编码,但是它是在循环中完成的,这使它很烦人。有没有解决这个问题的好方法?
import numpy as np
import matplotlib.pyplot as plt
x = np.asarray([1.0, 2.0, 3.0, 4.0, 5.0])
y = np.asarray([1.0, 2.0, 3.0, 4.0, 5.0])
xerr = np.asarray([0.2, 0.4, 0.6, 0.8, 1.0])
yerr = np.asarray([0.1, 0.2, 0.3, 0.4, 0.5])
plt.fill_between(x, y-yerr, y+yerr,alpha=0.5)
plt.fill_between(y,x-xerr,x+xerr,alpha=0.5)
plt.show()
Run Code Online (Sandbox Code Playgroud)
也许只是获取调色板中的当前位置并迭代到下一个就足够了。
有没有办法通过轴的分数在图形中定位文本?无论 x 和 y 的范围如何,我都希望所有绘图的文本都位于相同的位置。此功能在 ax.annotate() 中,但我需要添加额外的 'xy' 参数,这会使我的代码更难阅读。
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.plot(np.arange(10),12*np.arange(10))
ax.annotate('Correct Position', xy=(0, 0), xytext=(0.4, 0.7), textcoords='axes fraction')
ax.text(0.4, 0.7, 'Incorrect Position')
plt.show()
Run Code Online (Sandbox Code Playgroud) 我想在不平衡的分类问题上使用sklearn.ensemble.GradientBoostingClassifier。我打算针对接收器工作特性曲线(ROC AUC)下的面积进行优化。为此,我想重新分配班级以使小班级对分类器更加重要。
通常,这可以通过设置class_weight =“ balanced” 来实现(例如在RandomForestClassifier中),但GradientBoostingClassifier中没有此类参数。
该文件说:
“平衡”模式使用y值自动将权重与输入数据中的类频率成反比地调整为n_samples /(n_classes * np.bincount(y))
如果y_train是目标值为{0,1}的目标数据框,则说明该文档暗示应重现class_weight =“ balanced”
sample_weight = y_train.shape[0]/(2*np.bincount(y_train))
clf = ensemble.GradientBoostingClassifier(**params)
clf.fit(X_train, y_train,sample_weight = sample_weight[y_train.values])
Run Code Online (Sandbox Code Playgroud)
这是正确的还是我错过了什么?