导入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) 我的目标是通过它们的共同列(基因名称)合并两个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) 当使用R中较短数组的值填充数组时,R将"循环"较短数组中的元素.例如,设置长度为7的阵列[ , , , , , , ]与阵列['a','b','c']将给出['a','b','c','a','b','c','a'].
是否有内置方法使用类似的回收方式填充pandas列(或numpy数组)?
我在iPython笔记本中运行的过程持续了一个多小时.该过程是对大型数据帧的操纵,6400col x 200000rows,在此解释.看起来这个单元格仍在运行In:[*],但我想知道它是悬挂还是生产效率.插入print语句只能起作用(可能是由于iPython中的一些打印语句限制).
我正在使用Anaconda 2.5.0(64位)的Python 3.5.1和IPython 4.1.2.
甲熊猫数据帧列系列,same_group需要根据两个现有的列的值,以从布尔值被创建,row和col.如果一行中的两个单元格在字典中具有相似的值(相交值),则行需要显示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) 如何将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在创建之后进行一些处理以更改字典,但我想在同一步骤中进行转换,因为之后的处理涉及迭代非常大的字典.这有可能在熊猫中完成吗?
我正在使用的标签文件缺少最后的列名。当我尝试通过附加缺少的值来修复标头时,出现不匹配错误。这是说明问题的示例:
玩具实例
应该有一个''作为第一个列表的最后一个元素:
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) 我有多个重复的 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) 使用下面的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万对,所以非迭代方法会很好,如果存在的话.
将"提示"数据集绘制为关节图,我想根据"提示"数据框中的索引标记图表中的前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 ×8
pandas ×7
numpy ×5
python-3.x ×2
anaconda ×1
dataframe ×1
dictionary ×1
ipython ×1
jupyter ×1
list ×1
matplotlib ×1
pickle ×1
scipy ×1
seaborn ×1
sql ×1