小编Fab*_*nna的帖子

绘制分类热图保持(x,y)值颜色

我一直在使用python,pandas和seaborn来获得具有不同colormaps/columns的热图.感谢这个问题,我做了以下事情:

示例Dataframe(sample.csv):

X,a,b,c
A,0.5,0.7,0.4
B,0.9,0.3,0.8
C,0.3,0.4,0.7
Run Code Online (Sandbox Code Playgroud)

使用Seaborn绘制热图

import pandas as pd
import matplotlib as mpl
# Set new Backend to Use Seaborn
# mpl.use('Agg')
import seaborn as sns
import matplotlib.pyplot as plt
import matplotlib.cm as cm
import colorsys

# Working example data:
df = pd.DataFrame([[0.5,0.7,0.4],[.9,.3,.8],[.3,.4,.7]],['A','B','C'])    

# Get Color List
N = 3
COL = [colorsys.hsv_to_rgb(x*1.0/N, 0.7, 0.5) for x in range(N)]

with sns.axes_style('white'):

    for i, name in enumerate(df.columns):

        # Create cmap
        colors = COL[i]
        cmap = sns.light_palette(colors, …
Run Code Online (Sandbox Code Playgroud)

python matplotlib heatmap pandas seaborn

8
推荐指数
1
解决办法
1594
查看次数

如何从pandas groupby中的多个列中获取唯一值

从这个数据帧df开始:

df = pd.DataFrame({'c':[1,1,1,2,2,2],'l1':['a','a','b','c','c','b'],'l2':['b','d','d','f','e','f']})

   c l1 l2
0  1  a  b
1  1  a  d
2  1  b  d
3  2  c  f
4  2  c  e
5  2  b  f
Run Code Online (Sandbox Code Playgroud)

我想在c列上执行groupby 以获取l1l2列的唯一值.对于我可以做的一列:

g = df.groupby('c')['l1'].unique()
Run Code Online (Sandbox Code Playgroud)

正确返回:

c
1    [a, b]
2    [c, b]
Name: l1, dtype: object
Run Code Online (Sandbox Code Playgroud)

但使用:

g = df.groupby('c')['l1','l2'].unique()
Run Code Online (Sandbox Code Playgroud)

收益:

AttributeError: 'DataFrameGroupBy' object has no attribute 'unique'
Run Code Online (Sandbox Code Playgroud)

我知道我可以用(以及其他)获得两列的唯一值:

In [12]: np.unique(df[['l1','l2']])
Out[12]: array(['a', 'b', 'c', 'd', 'e', 'f'], dtype=object)
Run Code Online (Sandbox Code Playgroud)

有没有办法将此方法应用于groupby,以获得类似的东西:

c …
Run Code Online (Sandbox Code Playgroud)

python pandas

8
推荐指数
3
解决办法
1万
查看次数

python pandas dataframe:删除选定的行

我有一个pandas数据帧,如:

df = pd.read_csv('fruit.csv')

print(df)

   fruitname  quant
0      apple     10
1      apple     11
2      apple     13
3     banana     10
4     banana     20
5     banana     30
6     banana     40
7       pear     10
8       pear    102
9       pear   1033
10      pear   1012
11      pear    101
12      pear    100
13      pear   1044
14    orange     10
Run Code Online (Sandbox Code Playgroud)

我想删除最后一个条目PER FRUIT,如果该水果有一个奇数(不均匀)条目数(%2 == 1).没有循环数据帧.所以上面的最终结果是:

- 删除最后一个苹果,因为苹果发生3次 - 去除最后一个梨 - 删除最后一个(仅)橙色

导致:

   fruitname  quant
0      apple     10
1      apple     11
2     banana     10
3     banana     20
4     banana     30 …
Run Code Online (Sandbox Code Playgroud)

python pandas

7
推荐指数
3
解决办法
773
查看次数

pandas - groupby和过滤连续值

我有这个数据帧df:

U,Datetime
01,2015-01-01 20:00:00
01,2015-02-01 20:05:00
01,2015-04-01 21:00:00
01,2015-05-01 22:00:00
01,2015-07-01 22:05:00
02,2015-08-01 20:00:00
02,2015-09-01 21:00:00
02,2014-01-01 23:00:00
02,2014-02-01 22:05:00
02,2015-01-01 20:00:00
02,2014-03-01 21:00:00
03,2015-10-01 20:00:00
03,2015-11-01 21:00:00
03,2015-12-01 23:00:00
03,2015-01-01 22:05:00
03,2015-02-01 20:00:00
03,2015-05-01 21:00:00
03,2014-01-01 20:00:00
03,2014-02-01 21:00:00
Run Code Online (Sandbox Code Playgroud)

通过由U与一个Datetime对象.我想做的是过滤U几个月/年至少连续三次出现的值.到目前为止,我已经通过分组U,yearmonth为:

m = df.groupby(['U',df.index.year,df.index.month]).size()
Run Code Online (Sandbox Code Playgroud)

获得:

U          
1  2015  1     1
         2     1
         4     1
         5     1
         7     1
2  2014  1     1
         2     1
         3     1 …
Run Code Online (Sandbox Code Playgroud)

python time-series dataframe pandas

7
推荐指数
1
解决办法
1623
查看次数

pandas - 返回指数值列

从示例数据框开始,df如:

a,b
0,0.71
1,0.75
2,0.80
3,0.90
Run Code Online (Sandbox Code Playgroud)

我会添加一个具有指数值列的新列b.到目前为止我试过:

df['exp'] = math.exp(df['b'])
Run Code Online (Sandbox Code Playgroud)

但是这个方法返回:

"cannot convert the series to {0}".format(str(converter)"
TypeError: cannot convert the series to <type 'float'>
Run Code Online (Sandbox Code Playgroud)

有没有办法将math函数应用于整个列?

python pandas

7
推荐指数
1
解决办法
2万
查看次数

使用MultiIndex的Pandas数据框:检查字符串是否包含在索引级别中

假设我有一个多索引的pandas数据框,看起来像下面这个,取自文档.

import numpy as np
import pandas as pd

arrays = [np.array(['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux']),
          np.array(['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two'])]

df = pd.DataFrame(np.random.randn(8, 4), index=arrays)
Run Code Online (Sandbox Code Playgroud)

看起来像这样:

                0         1         2         3
bar one -0.096648 -0.080298  0.859359 -0.030288
    two  0.043107 -0.431791  1.923893 -1.544845
baz one  0.639951 -0.008833 -0.227000  0.042315
    two  0.705281  0.446257 -1.108522  0.471676
foo one -0.579483 -2.261138 -0.826789  1.543524
    two -0.358526  1.416211  1.589617  0.284130
qux one  0.498149 -0.296404  0.127512 -0.224526
    two -0.286687 …
Run Code Online (Sandbox Code Playgroud)

python pandas

7
推荐指数
1
解决办法
2492
查看次数

如何从pandas数据帧中提取日期索引以在matplotlib中用作x轴

我试图在pandas数据帧中绘制数据,使用索引(日期和时间)作为x轴,数据帧中的其余数据作为实际数据.这是我现在正在尝试的内容:

from matplotlib.finance import candlestick2

bars[['open','high','low','close']].head()


tickdatetime         open        high        low         close          

2012-09-20 09:00:00  1447.50     1447.50     1447.00     1447.00

2012-09-20 09:01:00  1447.00     1447.25     1447.00     1447.25

2012-09-20 09:02:00  1447.25     1447.75     1447.25     1447.50

2012-09-20 09:03:00  1447.75     1447.75     1447.25     1447.50

2012-09-20 09:04:00  1447.25     1447.50     1447.25     1447.50

fig,ax = plt.subplots()
ax.plot_date(bars.ix.to_pydatetime(), s, 'v-')
fig,ax = plt.subplots()
ax.plot_date(bars.ix.to_pydatetime(), s, 'v-')
ax = fig.add_axes([0.1, 0.2, 0.85, 0.7])
ax.autoscale_view()
linecol, rectcol =  candlestick2(ax,bars['open'],bars['close'],bars['high'],bars['low'],width=.5,colorup='g',colordown''r',alpha=1) 
z  = rectcol.get_zorder()
linecol.set_zorder(0.9*z)
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

AttributeError                            Traceback (most recent call last)
<ipython-input-57-d62385067ceb> in <module>()
1 fig,ax …
Run Code Online (Sandbox Code Playgroud)

matplotlib pandas

6
推荐指数
1
解决办法
1826
查看次数

Pandas - 读取 .csv 文件的结尾

我有一个大 (8 GB) csv gzip 文件。我想通过 pandas 将其读入 DataFrame 中。由于文件的长度很大,所以我分块读取它并且工作正常,但我有兴趣知道是否有办法只读取最后 x 行,而不解压缩整个文件。

python csv dataframe pandas

6
推荐指数
1
解决办法
2047
查看次数

numpy/scipy 从加权边列表构建邻接矩阵

我正在阅读一个加权 egdelist / numpy 数组,如:

0 1 1
0 2 1
1 2 1
1 0 1
2 1 4
Run Code Online (Sandbox Code Playgroud)

其中列是“User1”、“User2”、“Weight”。我想用 执行 DFS 算法scipy.sparse.csgraph.depth_first_tree,它需要一个 N x N 矩阵作为输入。如何将上一个列表转换为方阵:

0 1 1
1 0 1
0 4 0
Run Code Online (Sandbox Code Playgroud)

在 numpy 或 scipy 中?

谢谢你的帮助。

编辑:

我一直在使用一个巨大的(1.5 亿个节点)网络,所以我正在寻找一种内存高效的方法来做到这一点。

python numpy scipy

6
推荐指数
1
解决办法
1万
查看次数

pandas - boxplot中位数颜色设置问题

我正在运行Pandas 0.16.2和Matplotlib 1.4.3.我有这个问题着色由以下代码生成的boxplot的中位数:

df = pd.DataFrame(np.random.rand(10, 5), columns=['A', 'B', 'C', 'D', 'E'])

fig, ax = plt.subplots()

medianprops = dict(linestyle='-', linewidth=2, color='blue')

bp = df.boxplot(medianprops=medianprops)

plt.show()
Run Code Online (Sandbox Code Playgroud)

返回:

在此输入图像描述

看来该color设置未被读取.仅更改线条样式和线宽的设置,图表会正确反应.

medianprops = dict(linestyle='-.', linewidth=5, color='blue')
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

任何人都可以重现它吗?

python matplotlib pandas

6
推荐指数
2
解决办法
2842
查看次数

标签 统计

pandas ×9

python ×9

matplotlib ×3

dataframe ×2

csv ×1

heatmap ×1

numpy ×1

scipy ×1

seaborn ×1

time-series ×1