小编Tho*_*hew的帖子

ImportError:没有名为'pandas.indexes'的模块

导入pandas不会抛出错误,而是尝试读取拾取的pandas数据帧:

import numpy as np
import pandas as pd
import matplotlib
import seaborn as sns
sns.set(style="white")

control_data = pd.read_pickle('null_report.pickle')
test_data = pd.read_pickle('test_report.pickle')
Run Code Online (Sandbox Code Playgroud)

回溯是165行,有三个并发异常(无论这意味着什么).是read_pickle不是熊猫版17.1我跑兼容?如何取消我的数据帧的使用?

以下是回溯的副本:

ImportError                               Traceback (most recent call last)
C:\Users\test\Anaconda3\lib\site-packages\pandas\io\pickle.py in try_read(path, encoding)
     45             with open(path, 'rb') as fh:
---> 46                 return pkl.load(fh)
     47         except (Exception) as e:

ImportError: No module named 'pandas.indexes'

During handling of the above exception, another exception occurred:

ImportError                               Traceback (most recent call last)
C:\Users\test\Anaconda3\lib\site-packages\pandas\io\pickle.py in try_read(path, encoding)
     51                 with open(path, 'rb') as …
Run Code Online (Sandbox Code Playgroud)

python numpy pickle pandas

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

Pandas DataFrame.merge MemoryError

目标

我的目标是通过它们的共同列(基因名称)合并两个DataFrame,这样我就可以在每个基因行中获取每个基因得分的乘积.然后,我会对groupby患者和细胞进行检查,并对每个患者的所有分数求和.最终数据框应如下所示:

    patient  cell 
    Pat_1    22RV1    12
             DU145    15
             LN18      9
    Pat_2    22RV1    12
             DU145    15
             LN18      9
    Pat_3    22RV1    12
             DU145    15
             LN18      9
Run Code Online (Sandbox Code Playgroud)

最后一部分应该可以正常工作,但由于a,我无法对基因名称进行第一次合并MemoryError.以下是每个DataFrame的代码段.

数据

cell_s =

    Description          Name                      level_2  0
0  LOC100009676  100009676_at  LN18_CENTRAL_NERVOUS_SYSTEM  1
1  LOC100009676  100009676_at               22RV1_PROSTATE  2
2  LOC100009676  100009676_at               DU145_PROSTATE  3
3          AKT3      10000_at  LN18_CENTRAL_NERVOUS_SYSTEM  4
4          AKT3      10000_at               22RV1_PROSTATE  5
5          AKT3      10000_at               DU145_PROSTATE  6
6          MED6      10001_at  LN18_CENTRAL_NERVOUS_SYSTEM  7
7          MED6      10001_at               22RV1_PROSTATE  8
8          MED6      10001_at …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas anaconda

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

回收Pandas Dataframe

当使用R中较短数组的值填充数组时,R将"循环"较短数组中的元素.例如,设置长度为7的阵列[ , , , , , , ]与阵列['a','b','c']将给出['a','b','c','a','b','c','a'].

是否有内置方法使用类似的回收方式填充pandas列(或numpy数组)?

python numpy list pandas

8
推荐指数
2
解决办法
256
查看次数

检查Jupyter iPython笔记本中是否挂起了进程

我在iPython笔记本中运行的过程持续了一个多小时.该过程是对大型数据帧的操纵,6400col x 200000rows,在此解释.看起来这个单元格仍在运行In:[*],但我想知道它是悬挂还是生产效率.插入print语句只能起作用(可能是由于iPython中的一些打印语句限制).

我正在使用Anaconda 2.5.0(64位)的Python 3.5.1和IPython 4.1.2.

ipython python-3.x jupyter jupyter-notebook

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

熊猫系列矢量化查找到字典

问题陈述:

甲熊猫数据帧列系列,same_group需要根据两个现有的列的值,以从布尔值被创建,rowcol.如果一行中的两个单元格在字典中具有相似的值(相交值),则行需要显示True memberships,否则为False(没有相交的值).如何以矢量化方式(不使用apply)执行此操作?

建立:

import pandas as pd
import numpy as np 
n = np.nan
memberships = {
    'a':['vowel'],
    'b':['consonant'],
    'c':['consonant'],
    'd':['consonant'],
    'e':['vowel'],
    'y':['consonant', 'vowel']
}

congruent = pd.DataFrame.from_dict(  
         {'row': ['a','b','c','d','e','y'],
            'a': [ n, -.8,-.6,-.3, .8, .01],
            'b': [-.8,  n, .5, .7,-.9, .01],
            'c': [-.6, .5,  n, .3, .1, .01],
            'd': [-.3, .7, .3,  n, .2, .01],
            'e': [ .8,-.9, .1, .2,  n, .01],
            'y': [ .01, .01, .01, .01,  .01, n],
       }).set_index('row') …
Run Code Online (Sandbox Code Playgroud)

python numpy pandas

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

Pandas将数据帧放入稀疏的字典词典中

如何将pandas dataFrame转换为字典的稀疏字典,其中仅显示某些截止的索引.在下面的玩具示例中,我只想要值> 0的每列的索引

import pandas as pd

table1 = [['gene_a', -1 , 1], ['gene_b', 1, 1],['gene_c', 0, -1]]
df1 = pd.DataFrame(table)
df1.columns = ['gene','cell_1', 'cell_2']
df1 = df1.set_index('gene')
dfasdict = df1.to_dict(orient='dict')
Run Code Online (Sandbox Code Playgroud)

这给出了:

dfasdict = {'cell_1': {'gene_a': -1, 'gene_b': 0, 'gene_c': 0}, 'cell_2': {'gene_a': 1, 'gene_b': -1, 'gene_c': -1}}

但是所需的输出是稀疏字典,其中只显示小于零的值:

desired = {'cell_1': {'gene_a': -1}, 'cell_2': {'gene_b': -1, 'gene_c': -1}}

我可以dfasdict在创建之后进行一些处理以更改字典,但我想在同一步骤中进行转换,因为之后的处理涉及迭代非常大的字典.这有可能在熊猫中完成吗?

python dictionary pandas

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

在Pandas数据框中分配新的列标签时,长度不匹配错误

我正在使用的标签文件缺少最后的列名。当我尝试通过附加缺少的值来修复标头时,出现不匹配错误。这是说明问题的示例:

玩具实例

应该有一个''作为第一个列表的最后一个元素:

missingcol = [[gene, cell_1, '', cell_2]
               [MYC, 5.0, P, 4.0, A]
               [AKT, 3.0, A, 1.0, P]]
Run Code Online (Sandbox Code Playgroud)

为了解决这个问题,我阅读了第一行,在的后面添加了'',并通过跳过第一行将其加载missingcol到pandas数据框中,header=None并使用修改后的标题重新定义了列名,如下所示:

fullheader = missingcol[0].append('')
fullheader = missingcol[0]

missingcol_dropheader = missingcol[1:]

df = pd.DataFrame(missingcol_dropheader, columns=fullheader)
df
Run Code Online (Sandbox Code Playgroud)

这给了我错误:

AssertionError: 4 columns passed, passed data had 5 columns
Run Code Online (Sandbox Code Playgroud)

最后我检查了一下,新的fullheader实际上有5个元素来匹配数据框中的5个元素。 是什么导致这种持续的不匹配,我该如何解决?

真实的例子

当我重复这些相同的步骤时,但是在read_csv我的实际测试用例中使用method 时,也会收到类似的错误。我忽略了行0的标题和行1-3的三个空白行,并删除了不需要的第一列,但其他方面类似:

with open('CCLE_Expression_Entrez_2012-10-18.res', 'r') as f:
    header = f.readline().strip().split('\t')
header.append('') # missing empty colname over last A/P col

rnadf = pd.read_csv('CCLE_Expression_Entrez_2012-10-18.res', delimiter='\t', …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

在 SQL 中选择列数据最密集(NULL 最少)的行

我有多个重复的 ID,需要将其减少为单个值。通常我会使用聚合方法来组合列值(作为总和、平均值等)。在这里,我感兴趣的是只保留所有列中非空值数量最多的行:

给定这个表:

id   col1   col2   col3
1    a      ''     ''
1    a      b      ''
2    x      y      ''
1    a      b      c
2    s      ''     ''
Run Code Online (Sandbox Code Playgroud)

我如何选择:

id   col1   col2   col3
2    x      y      ''
1    a      b      c
Run Code Online (Sandbox Code Playgroud)

sql

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

Pandas中的一致表(Pearson每行对每行之间的相关性)

使用下面的pandas数据框,取自dict的dict:

import numpy as np
import pandas as pd
from scipy.stats import pearsonr

NaN = np.nan


dd ={'A': {'A': '1', 'B': '2', 'C': '3'},
         'B': {'A': '4', 'B': '5', 'C': '6'},
         'C': {'A': '7', 'B': '8', 'C': '9'}}

df_link_link = pd.DataFrame.from_dict(dd, orient='index')
Run Code Online (Sandbox Code Playgroud)

我想形成一个新的pandas DataFrame,每行的行之间有Pearson相关的结果,不包括相同行之间的Pearson相关性(将A与其自身相关联NaN.这是拼写为dicts的字典:

dict_congruent = {'A': {'A': NaN, 
                        'B': pearsonr([NaN,2,3],[4,5,6]), 
                        'C': pearsonr([NaN,2,3],[7,8,9])},
                  'B': {'A': pearsonr([4,NaN,6],[1,2,3]), 
                        'B': NaN, 
                        'C': pearsonr([4,NaN,6],[7,8,9])},
                  'C': {'A': pearsonr([7,8,NaN],[1,2,3]), 
                        'B': pearsonr([7,8,NaN],[4,5,6]), 
                        'C': NaN }}
Run Code Online (Sandbox Code Playgroud)

这里NaN就是numpy.nan.有没有办法在pandas中执行此操作而无需迭代dicts的字典?我有~7600万对,所以非迭代方法会很好,如果存在的话.

python numpy scipy python-3.x pandas

5
推荐指数
1
解决办法
739
查看次数

在Seaborn Jointplot上注释异常值

将"提示"数据集绘制为关节图,我想根据"提示"数据框中的索引标记图表中的前10个异常值(或前n个异常值).我计算残差(点与平均线的距离)来找出异常值.请忽略这种异常值检测方法的优点.我只想根据规范注释图表.

import seaborn as sns
sns.set(style="darkgrid", color_codes=True)

tips = sns.load_dataset("tips")
model = pd.ols(y=tips.tip, x=tips.total_bill)
tips['resid'] = model.resid

#indices to annotate
tips.sort_values(by=['resid'], ascending=[False]).head(5)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

tips.sort_values(by=['resid'], ascending=[False]).tail(5)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

%matplotlib inline
g = sns.jointplot("total_bill", "tip", data=tips, kind="reg",
                  xlim=(0, 60), ylim=(0, 12), color="r", size=7)
Run Code Online (Sandbox Code Playgroud)

如何通过每个点的索引值(最大残差)对图表中的前10个异常值(最大5个和最小5个残差)进行注释,以实现此目的:

在此输入图像描述

python numpy matplotlib seaborn

5
推荐指数
1
解决办法
2298
查看次数