Python 单细胞多数据相关性分析
我有一个数据集,其中一些行包含单个答案,而另一些行包含多个答案。像这样:Python 单细胞多数据相关性分析,python,pandas,dataframe,statistics,correlation,Python,Pandas,Dataframe,Statistics,Correlation,我有一个数据集,其中一些行包含单个答案,而另一些行包含多个答案。像这样: year length Animation 0 1971 121 1,2,3 1 1939 71 1,3 2 1941 7 0,2 3 1996 70 1,2,0 4 1975 71 3,2,0 对于单数答案,我设法使用df.corr()创建了一
year length Animation
0 1971 121 1,2,3
1 1939 71 1,3
2 1941 7 0,2
3 1996 70 1,2,0
4 1975 71 3,2,0
对于单数答案,我设法使用df.corr()创建了一个热图,但我不知道什么是多个答案行的最佳方法
我可以拆分它们并为每个答案添加额外的列,如:
year length Animation
0 1971 121 1
1 1971 121 2
2 1971 121 3
3 1939 71 1
4 1939 71 3 ...
然后执行完全相同的dr.corr(),或添加其他动画\u 01、动画\u 02。。。但是必须有一个更聪明的方法来解决这个问题吗
编辑:实际数据片段要将
动画
(或数据片段中的首选位置
)分解为一系列的一个热列,原始列中的每个唯一字符串对应一个热列。具有的每个列的值为零或一,其中一个对应于该字符串出现在原始列中的行
首先,您需要在首选位置
中获得所有唯一的子字符串(有关如何处理列表列的信息,请参阅本文)
然后,您可以根据给定位置是否位于每行的首选位置
,在循环中创建位置列
for position in positions:
df[position] = df.Preferred_positions.apply(
lambda x: 1 if position in x else 0
)
您希望将
动画
(或数据片段中的首选位置
)分解为一系列的一个热列,原始列中的每个唯一字符串对应一个热列。具有的每个列的值为零或一,其中一个对应于该字符串出现在原始列中的行
首先,您需要在首选位置
中获得所有唯一的子字符串(有关如何处理列表列的信息,请参阅本文)
然后,您可以根据给定位置是否位于每行的首选位置
,在循环中创建位置列
for position in positions:
df[position] = df.Preferred_positions.apply(
lambda x: 1 if position in x else 0
)
您应该使用计算两个分类变量之间的频率表,并基于该表执行后续分析<当
x
和y
中的一个是分类的时,无论是否编码为数字,code>df.corr(x,y)在数学上都没有意义
注意:1如果x
是分类的,而y
是数字的,则有两个选项来描述它们之间的联系:
y
分组为分位数(BIN),并将其视为分类x
1个热编码虚拟变量执行y
的线性回归长度的分组
ct = pd.crosstab(df["Animation"], df["length"])
print(ct)
# Out[65]:
# length 7 70 71 121
# Animation
# 0 1 1 1 0
# 1 0 1 1 1
# 2 1 1 1 1
# 3 0 0 2 1
形象化
实例分析
根据频率表,您可以询问关于给定某个(子集)x
值的y
分布的问题,反之亦然。这应该更好地描述两个分类变量之间的联系,因为分类变量没有顺序
比如说,
Q: What length does Animation=3 produces?
A: 66.7% chance to give 71
33.3% chance to give 121
otherwise unobserved
您应该使用计算两个分类变量之间的频率表,并基于该表执行后续分析<当x
和y
中的一个是分类的时,无论是否编码为数字,code>df.corr(x,y)
在数学上都没有意义
注意:1如果x
是分类的,而y
是数字的,则有两个选项来描述它们之间的联系:
y
分组为分位数(BIN),并将其视为分类x
1个热编码虚拟变量执行y
的线性回归长度的分组
ct = pd.crosstab(df["Animation"], df["length"])
print(ct)
# Out[65]:
# length 7 70 71 121
# Animation
# 0 1 1 1 0
# 1 0 1 1 1
# 2 1 1 1 1
# 3 0 0 2 1
形象化
实例分析
根据频率表,您可以询问关于给定某个(子集)x
值的y
分布的问题,反之亦然。这应该更好地描述两个分类变量之间的联系,因为分类变量没有顺序
比如说,
Q: What length does Animation=3 produces?
A: 66.7% chance to give 71
33.3% chance to give 121
otherwise unobserved
假设x=动画,那么corr(x,y)的y变量是什么?列出的数据只是示例数据。但可以是corr(动画,年份)或corr(动画,长度)。如果有帮助,可以发布实际数据片段。但我的问题基本上是如何对包含多行的行使用corr()。不确定X是如何影响的。在底部添加了一段实际数据。我的例子是如何找到“当前排名”与“首选位置”或“当前排名”与“你最难处理的事情”之间的相关性。我这样问是因为在df.corr()
中放入分类变量没有意义。这三种关联方法都适用于数值变量。我不明白你想在数学上实现什么。啊,好吧,如果我错了,请随时纠正我。但是将字符串转换成整数以使用相关性,在数学上不是不正确吗?否则,人们将如何找到两个字符串之间的相关性,而不是与字符串值的相关性?由于X值的原因,Y值的可能性或多或少是一样的。假设X=动画,corr(X,Y)的Y变量是什么?列出的数据只是示例数据。但可以是corr(动画,年份)或corr(动画,长度)。如果有帮助,可以发布实际数据片段。但我的问题基本上是如何对包含多行的行使用corr()。不确定X是如何影响的。在底部添加了一段实际数据。我的例子是如何