【问题标题】:Clean up this int64 variable in python在 python 中清理这个 int64 变量
【发布时间】:2019-06-14 03:37:43
【问题描述】:

这是 var FREQUENCY 的原始分布

NaN    22131161
1.0     4182626
7.0      218343
3.0      145863
1         59432
0.0       29906
2.0       28129
4.0       15237
5.0        4553
8.0        3617
3          2754
7          2635
9.0         633
2           584
4           276
0           112
8            51
5            42
6.0          19
A             9
I             7
9             6
Q             3
Y             2
X             2
Z             1
C             1
N             1
G             1
B             1
Name: FREQUENCY, dtype: int64
  1. 组 1.0 应该和 1 一样。我写了 df['x']=df['x].replace({'1.0:'1'})。它不会改变任何东西。 9.0 vs 9、3.0 vs.3 症状相同
  2. 如果出现字母,频率如何呈现为 int64?
  3. 期望结果 1:将所有字母组 +NaN 归为一组。其余数值组合并(例如,1.0 和 1 =1)。在 SAS 中,我只运行这个:y=1*X。我只是给出一个值 10 来表示字符组 + NaN。如何在 Python 中做到这一点,特别优雅?
  4. 结果 2:如果 x=NaN,则提取二进制变量 z=1。否则 z=0

【问题讨论】:

  • 这看起来像是家庭作业?到目前为止你做了什么来解决它?
  • 这不是家庭作业。这是大型企业中严肃的高级分析工作。这是一个将代码从 SAS 转移到 Python 的过程。从来没见过1.0可以和1分开。好的。由于我正在玩Python,所以想看看是否有任何快速的方法可以用Python编写它。这在大型机 JCL 上也不会发生。
  • 我只是在这里求知。工作没有延误。
  • 我首先在python中使用sas7bdat来读取SAS数据格式的原始数据。它进展得很慢,工作一直在弯腰。所以我运行 SAS 将数据集导出为 CSV 并切换到 pd.read_csv。它进行得非常非常快。常规 Python 3.7.2 ~10 分钟。打开 pyspark 大约需要 2 分钟。工作真的很棒。我自然要审核。所有其他变量,~98,结果如预期。除了这个。不知道发生了什么。知道我想要它是什么。但是像这样编码一个 int64 对我来说并不容易。想这里有人可能知道。

标签: python pandas replace recode int64


【解决方案1】:

第一期“ 组 1.0 应该和 1 一样。我写了 df['x']=df['x].replace({'1.0:'1'})。它不会改变任何东西。 9.0 vs 9、3.0 vs.3症状相同" 一旦我在读取 csv 文件时添加 dtype={'FREQUANCY':'object'} 就已修复。组 1.0 与组 1 折叠...之后替换工作正常。

几乎所有其他问题都已解决,除了问题 2,它仍然将变量类型设置为 int64,其中存在字符变量。我的猜测是 Python 可能采用多数规则来对数据类型进行投票。确实是真正的数值在计数中占主导地位。

【讨论】:

    猜你喜欢
    • 2020-12-29
    • 2012-01-04
    • 1970-01-01
    • 2020-07-18
    • 1970-01-01
    • 1970-01-01
    • 2016-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多