我有一个看起来像这样的tsv(长形式):
one two value
a b 30
a c 40
a d 20
b c 10
b d 05
c d 30
Run Code Online (Sandbox Code Playgroud)
我想把它变成R(或pandas)的数据帧
a b c d
a 00 30 40 20
b 30 00 10 05
c 40 10 00 30
d 20 05 30 00
Run Code Online (Sandbox Code Playgroud)
问题是,在我的tsv中我只有a,b定义而不是b,a.所以我的数据框中有很多NA.
最终目标是获得用于聚类的距离矩阵.任何帮助,将不胜感激.
Tk几何管理器是否有类似pack to new line的东西?我正在使用 pack 将小部件放在框架内。在高分辨率屏幕上,小部件适合并排查找。但是,如果将其放入较小的屏幕中,则小部件将在框架中耗尽空间。
基本上,我们从:

到:
您可以看到它如何切断我的处理器输入字段。相关代码:
options_frame = ttk.LabelFrame(
parent_frame, text="Blast Options")
options_frame.pack(side=TOP, fill=X, expand=1, padx=5, pady=5)
self._set_up_blast_options(options_frame)
def _set_up_blast_options(self, options_frame):
self.evalue = Tkinter.DoubleVar()
self.evalue.set(1)
self.word_size = Tkinter.IntVar()
self.word_size.set(4)
self.penalty_mismatch = Tkinter.DoubleVar()
self.penalty_mismatch.set(-4)
self.min_d_match = Tkinter.IntVar()
self.min_d_match.set(5)
self.proc_count = Tkinter.IntVar()
self.proc_count.set(cpu_count())
# evalue
e_value_label = ttk.LabelFrame(
options_frame, text="e-Value Threshold")
e_value_entry = ttk.Entry(e_value_label)
e_value_entry.insert(0, self.evalue.get())
e_value_entry.bind('<Return>', self._validate_e_value)
e_value_entry.bind('<FocusOut>', self._validate_e_value)
e_value_label.pack(side=LEFT, expand=1, pady=5, padx=5, fill=X)
e_value_entry.pack(side=TOP, expand=1, pady=5, padx=5, fill=X)
# word size
word_size_label = ttk.LabelFrame(
options_frame, text="Word Size") …Run Code Online (Sandbox Code Playgroud) 我有两个 matplotlib (seaborn) 图形对象,它们都是在不同的 ipython 单元中制作的。
#One Cell
fig_1_object = sns.factorplot(y='freq',x='d_fam',col='easy_donor',kind="bar",data=collection_d_fam)
fig_1 = fig_1_object.fig
#Two Cell
fig_2_object = sns.factorplot(y='freq',x='d_fam',col='easy_donor',kind="bar",data=collection_c_fam)
fig_2 = fig_2_object.fig
Run Code Online (Sandbox Code Playgroud)
我怎样才能在同一个单元格中依次“显示”它们。我打开了 matplotlib 内联。
#third cell
fig_1
fig_2
>>Only shows fig_2
Run Code Online (Sandbox Code Playgroud) 我正在尝试对pandas 数据结构进行子类化。如果我在实例上设置一个字段,它工作正常。
import seaborn as sns
import pandas as pd
df = sns.load_dataset('iris')
class Results(pd.DataFrame):
def __init__(self, *args, **kwargs):
# use the __init__ method from DataFrame to ensure
# that we're inheriting the correct behavior
super(Results, self).__init__(*args, **kwargs)
@property
def _constructor(self):
return Results
result_object = Results(df)
result_object['scheme'] = 'not_default'
print(result_object.head(5))
>>> sepal_length sepal_width petal_length petal_width species scheme
0 5.1 3.5 1.4 0.2 setosa not_default
1 4.9 3.0 1.4 0.2 setosa not_default
2 4.7 3.2 1.3 0.2 …Run Code Online (Sandbox Code Playgroud) 长话短说
我有一个嵌套字典.当我把它变成数据帧时.
import pandas
pdf = pandas.DataFrame(nested_dict)
95 96 97 98 99 100 101 102 103 104 105 \
A 70019 102 4243 3083 3540 6311 4851 5938 4140 4659 3100
C 0 185 427 433 1190 910 3898 3869 2861 2149 3065
D 8 9 23463 1237 2574 4174 3640 4747 3557 4582 5934
E 141 89 5034 1576 2303 3416 2377 1252 1204 1703 718
F 7 12 1937 2246 1687 1154 1317 3473 1881 2221 3060
G …Run Code Online (Sandbox Code Playgroud) 我有一些%rmagic接收数据帧并绘制它.我不能用python中的当前ggplot实现来做到这一点.所以我想知道我是否可以使用函数将数据帧传递给包含R代码并可能返回它的单元格.这就是我的想法:
#cell 1
def plot_in_r(dataframe):
pass_to_cell_2(dataframe)
#cell 2
%%R -i dataframe
ggplot(dataframe) + geom_bar()
Run Code Online (Sandbox Code Playgroud)
它不一定是其他单元格的单元格,但是我需要将一些东西传递给R并让它通过我可以重复使用的函数绘制在笔记本中.
这是顺序:
l = [['A', 'G'], 'A', ['A', 'C']]
Run Code Online (Sandbox Code Playgroud)
我需要为每个排列返回三个元素序列
all = ['AAA','GAA','AAC','GAC']
Run Code Online (Sandbox Code Playgroud)
我无法想出这一个!我在保留排列顺序方面遇到了麻烦!
如果我有以下代码:
import seaborn
import matplotlib.pyplot as plt
flights = sns.load_dataset("flights")
flights = flights.pivot("month", "year", "passengers")
f,(ax1,ax2,ax3) = plt.subplots(1,3,sharey=True)
g1 = sns.heatmap(flights,cmap="YlGnBu",cbar=False,ax=ax1)
g1.set_ylabel('')
g1.set_xlabel('')
g2 = sns.heatmap(flights,cmap="YlGnBu",cbar=False,ax=ax2)
g2.set_ylabel('')
g2.set_xlabel('')
g3 = sns.heatmap(flights,cmap="YlGnBu",ax=ax3)
g3.set_ylabel('')
g3.set_xlabel('')
Run Code Online (Sandbox Code Playgroud)
如何调整子图,使g3轴与g1,g2轴的宽度相同.由于我没有将颜色条添加到前两个轴',因此seaborn会缩小第三个轴以使整个图形保持一致.这是可以理解的.
我要这个:
也许我需要制作一个4面板子图,第四个面板只包含颜色条?
我意识到我可以使用 Pool 类并可能得到我需要的东西,但我想要更好地控制我的问题。我的工作比处理器多,所以我不希望它们同时运行。
例如:
from multiprocessing import Process,cpu_count
for dir_name in directories:
src_dir = os.path.join(top_level,dir_name)
dst_dir = src_dir.replace(args.src_dir,args.target_dir)
p = Process(target=transfer_directory, args=(src_dir, dst_dir,))
p.start()
Run Code Online (Sandbox Code Playgroud)
但是,如果我有超过 16 个目录,那么我将启动比处理器更多的作业。这是我的解决方案,它真的很黑客。
from multiprocessing import Process,cpu_count
jobs = []
for dir_name in directories:
src_dir = os.path.join(top_level,dir_name)
dst_dir = src_dir.replace(args.src_dir,args.target_dir)
p = Process(target=transfer_directory, args=(src_dir, dst_dir,))
jobs.append(p)
alive_jobs = []
while jobs:
if len(alive_jobs) >= cpu_count():
time.sleep(5)
print alive_jobs
for aj in alive_jobs:
if aj.is_alive():
continue
else:
print "job {} removed".format(aj)
alive_jobs.remove(aj)
continue
for job in jobs: …Run Code Online (Sandbox Code Playgroud) 我有一个看起来像这样的数据框.
> head(df)
DGene JGene cdr3_len Sum
1 IGHD1 IGHJ1 0 22
2 IGHD1 IGHJ1 1 11
3 IGHD1 IGHJ1 2 16
4 IGHD1 IGHJ1 3 40
5 IGHD1 IGHJ1 4 18
6 IGHD1 IGHJ1 5 30
...
Run Code Online (Sandbox Code Playgroud)
facet_grid非常简单.
ggplot(df,aes(x=cdr3_len,y=Sum)) + geom_line() + xlim(c(1,42)) + facet_grid(JGene~DGene,scales="free_y")
Run Code Online (Sandbox Code Playgroud)
并得到一些看起来像的东西.
我想知道是否有人可以帮我添加每个网格的平均值的hline.或者可能如何在右上角打印每个网格的平均值.
谢谢,
编辑 - 数据框的完整链接
python ×7
r ×3
ipython ×2
matplotlib ×2
pandas ×2
seaborn ×2
dataframe ×1
ggplot2 ×1
matrix ×1
permutation ×1
python-2.7 ×1
reshape ×1
rpy2 ×1
tk-toolkit ×1
tkinter ×1
ttk ×1