Tag: pandas

使matplotlib从Python的pandas中的数据框分散绘图

在Python中使用matplotlib从pandas数据matplotlib制作一系列散点图的最佳方法是什么? 例如,如果我有一个数据框df有一些感兴趣的列,我发现自己通常转换所有的数组: import matplotlib.pylab as plt # df is a DataFrame: fetch col1 and col2 # and drop na rows if any of the columns are NA mydata = df[["col1", "col2"]].dropna(how="any") # Now plot with matplotlib vals = mydata.values plt.scatter(vals[:, 0], vals[:, 1]) 在绘图之前把所有东西都转换成数组的问题是,它迫使你摆脱数据框。 考虑以下两种使用情况,其中具有完整的数据框对绘图至关重要: 例如,如果您现在想要查看col3所有值,以查找在调用中绘制的相应值以scatter ,并按照该值对每个点(或大小)进行着色? 你必须回去,拉出col1,col2的非na值col1,col2并检查它们相应的值。 有没有一种方法来绘制,同时保留数据框? 例如: mydata = df.dropna(how="any", subset=["col1", "col2"]) […]

python pandas:将一个带有参数的函数应用于一系列

我想应用一个函数的参数在Pythonpandas系列: x = my_series.apply(my_function, more_arguments_1) y = my_series.apply(my_function, more_arguments_2) … 该文档描述了对apply方法的支持,但不接受任何参数。 有不同的方法可以接受参数吗? 另外,我错过了一个简单的解决方法? 更新(2017年10月):请注意,由于这个问题最初被要求pandas apply()已被更新以处理位置和关键字参数,上面的文档链接现在反映了这一点,并显示了如何包含任一types的参数。

使matplotlibgraphics看起来像R默认?

有没有办法使matplotlib行为相同的R,或几乎像R,在绘图默认方面? 例如,R和matplotlib完全不同。 以下直方图 有“浮动轴”与外向蜱,这样就没有内部蜱(不像matplotlib )和轴不会越过“靠近”的原点。 另外,直方图可以“溢出”到未被勾号标记的值 – 例如,x轴在3处结束,但直方图稍微超出了它。 matplotlib所有直方图如何自动实现? 相关问题:散点图和线图在R中有不同的默认轴设置,例如: 没有内部的蜱再次和蜱向外面。 而且,在原点之后(y轴和x轴在轴的左下方交叉)稍微开始滴答,滴答在轴结束之前略微结束。 这样,最低x轴刻度和最低y轴刻度的标签不能真正交叉,因为它们之间有一个空间,这使得情节非常优雅干净的外观。 请注意,在蜱标签和蜱本身之间也有相当多的空间。 此外,默认情况下,未标记的x轴或y轴上没有刻度,表示左侧的y轴与右侧标记的y轴平行,没有刻度,x轴也是一样,再次从地块中消除混乱。 有没有办法让matplotlib看起来像这样? 一般来说,默认情况下,默认的R图是多less? 我非常喜欢matplotlib但是我认为R默认/开箱即可的绘图行为确实已经得到了正确的结果,而且它的默认设置很less会导致重叠的刻度标签,杂乱的或压扁的数据,所以我希望默认值是尽可能地多。

Matplotlib阴谋是没有显示

当我运行这个代码 import pandas as pd import numpy as np def add_prop(group): births = group.births.astype(float) group['prop'] = births/births.sum() return group pieces = [] columns = ['name', 'sex', 'births'] for year in range(1880, 2012): path = 'yob%d.txt' % year frame = pd.read_csv(path, names = columns) frame['year'] = year pieces.append(frame) names = pd.concat(pieces, ignore_index = True) total_births = […]

在Python / numpy / pandas中有效检查任意对象是否是NaN?

我的numpy数组使用np.nan来指定缺less的值。 当我迭代数据集时,我需要检测这些缺失的值并以特殊的方式处理它们。 numpy.isnan(val)我使用numpy.isnan(val) ,它工作得很好,除非val不是numpy.isnan()支持的types的子集。 例如,缺less的数据可能出现在string字段中,在这种情况下,我得到: >>> np.isnan('some_string') Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: Not implemented for this type 除了写一个昂贵的包装,捕捉exception并返回False ,有没有办法处理这个优雅和高效?

检测并排除Pandas数据框中的exception值

我有一个只有几列的pandas数据框。 现在我知道某些行是基于某个列值的exception值。 例如列 – “Vol”具有12.xx左右的所有值和4000的值 现在我想排除那些有这样的卷列的行。 所以基本上我需要把一个filter,以便我们select所有行中的某一列的值是在平均值的3个标准偏差内。 什么是一个优雅的方式来实现这一目标。

Pythonpandas:逐行填充dataframe

将一行添加到pandas.DataFrame对象的简单任务似乎很难完成。 有3个与此相关的stackoverflow问题,没有一个给出了一个工作的答案。 这是我想要做的。 我有一个DataFrame我已经知道的形状以及行和列的名称。 >>> df = pandas.DataFrame(columns=['a','b','c','d'], index=['x','y','z']) >>> df abcd x NaN NaN NaN NaN y NaN NaN NaN NaN z NaN NaN NaN NaN 现在,我有一个函数来迭代计算行的值。 我怎样才能用字典或pandas.Series来填充其中pandas.Series呢? 以下是各种失败的尝试: >>> y = {'a':1, 'b':5, 'c':2, 'd':3} >>> df['y'] = y AssertionError: Length of values does not match length of index 显然它试图添加一列而不是一行。 >>> y = […]

pandas的好方法是获得每个组中的前n个logging

假设我有这样的pandasDataFrame: >>> df = pd.DataFrame({'id':[1,1,1,2,2,2,2,3,4],'value':[1,2,3,1,2,3,4,1,1]}) >>> df id value 0 1 1 1 1 2 2 1 3 3 2 1 4 2 2 5 2 3 6 2 4 7 3 1 8 4 1 我想获得每个id的前2个logging的新的DataFrame,像这样: id value 0 1 1 1 1 2 3 2 1 4 2 2 7 3 1 8 […]

如何通过正则expression式过滤pandas行

我想在其中一列上使用正则expression式干净地过滤数据框。 对于一个人为的例子: In [210]: foo = pd.DataFrame({'a' : [1,2,3,4], 'b' : ['hi', 'foo', 'fat', 'cat']}) In [211]: foo Out[211]: ab 0 1 hi 1 2 foo 2 3 fat 3 4 cat 我想用正则expression式来过滤那些以f开头的行。 先去: In [213]: foo.b.str.match('f.*') Out[213]: 0 [] 1 () 2 () 3 [] 这不是太有用。 但是,这将使我的布尔指数: In [226]: foo.b.str.match('(f.*)').str.len() > 0 Out[226]: 0 […]

pandas:采样dataframe

我试图读pandas一个相当大的CSV文件,并将其分成两个随机的块,其中一个是10%的数据,另一个是90%。 这是我目前的尝试: rows = data.index row_count = len(rows) random.shuffle(list(rows)) data.reindex(rows) training_data = data[row_count // 10:] testing_data = data[:row_count // 10] 出于某种原因,当我试图在SVM分类器中使用这些DataFrame对象之一时, sklearn抛出这个错误: IndexError: each subindex must be either a slice, an integer, Ellipsis, or newaxis 我觉得我做错了。 有一个更好的方法吗?