Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 规范化/绘制文本数据,并在大型数据集上测试有效性_Python_Pandas_Seaborn - Fatal编程技术网

Python 规范化/绘制文本数据,并在大型数据集上测试有效性

Python 规范化/绘制文本数据,并在大型数据集上测试有效性,python,pandas,seaborn,Python,Pandas,Seaborn,这是经过反复试验后得出的结论。我不太相信我的模型,但如果有人想要它,我很乐意提供它,以及原始数据。它目前在BigQuery中,但我可以导出它并将它放在某个地方。我有2019年上半年6天的数据,每个月一次,总计约164MM行。不管怎样,我打算晚些时候把它放在Kaggle上 | actor_gender | sentiment | author_gender ---|--------------|--------------------|--------------|---

这是经过反复试验后得出的结论。我不太相信我的模型,但如果有人想要它,我很乐意提供它,以及原始数据。它目前在BigQuery中,但我可以导出它并将它放在某个地方。我有2019年上半年6天的数据,每个月一次,总计约164MM行。不管怎样,我打算晚些时候把它放在Kaggle上

   | actor_gender | sentiment          | author_gender
---|--------------|--------------------|--------------|---
0  | Male         |   __label__terse   |    Male      |
1  | Female       |   __label_positive |    Male      |
2  | Male         |   __label_negative |    Male      |
我使用了
groupby()
(仅在作者(性别)上-交叉情绪将是一个极好的奖励)来产生以下结果:

author_gender  sentiment
   
Female     __label__helpful      351809
           __label__negative     500718
           __label__neutral      508554
           __label__positive     513237
           __label__terse        478805
Male       __label__helpful     3121180
           __label__negative    4549122
           __label__neutral     4631527
           __label__positive    4679315
           __label__terse       4328896
然后我用sklearn将其规范化:

array([[0.        , 0.        ],
       [0.9224484 , 0.91644306],
       [0.97099016, 0.96933   ],
       [1.        , 1.        ],
       [0.78670367, 0.77510357]])
编辑:这是MinMax,回想起来,它不像以前那样正确-我想我需要将它应用于整个数据帧,而不是groupby

我想做的是以一种准确表示数据的方式绘制它——我想可能是一种分类图,轴是(情绪,计数),性别是色调,但如果有更好的方法,我洗耳恭听。我不知道我需要如何将数据转换成Seaborn可以使用的东西


最后,我需要根据作者的性别(也许还有演员)对情绪分布没有影响这一无效假设来检验数据。我已经读过关于T检验、Z检验和卡方检验的书,老实说,我不知道这里哪一个是合适的。

我猜使用normalize,您的意思是百分比,可能类似于堆叠条形图,因此我们可以先生成一个表,以允许后续的测试:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

lab = ["__label__helpful","__label__negative","__label__neutral",
       "__label__positive","__label__terse"]

df = pd.DataFrame({'author_gender':np.random.choice(["Female","Male"],1000),
                'sentiment':np.random.choice(lab,1000)})

tab = pd.crosstab(df['sentiment'],df['author_gender'],normalize='index')
这是表格的外观:

author_gender   Female  Male
sentiment       
__label__helpful    0.510753    0.489247
__label__negative   0.487685    0.512315
__label__neutral    0.568807    0.431193
__label__positive   0.525773    0.474227
__label__terse  0.542714    0.457286
绘图:

对于测试,您使用卡方检验,在本例中,因为数据是模拟的,所以得到的p值接近1

from scipy.stats import chi2_contingency
chi2, p, dof, ex = chi2_contingency(tab, correction=False)
p
0.9999710076066467
我创建了一个用于根据视口自动聚合绘图的程序,这样它仍然是快速和交互式的。您可以选择哪些方法将接收数据的一部分,并根据您认为合适的内容对其进行聚合


基本上,这允许您使用仍然会产生大量数据(百万分之十)的聚合器,所以在可视化数据时应该仍然相当准确。

通过规范化,我的意思是缩放数据,因为实际分布是严重倾斜的。不过,我能理解这一部分。谢谢你的交叉表解释,这对我来说是新的。
from scipy.stats import chi2_contingency
chi2, p, dof, ex = chi2_contingency(tab, correction=False)
p
0.9999710076066467