标签: data-munging

既然 Pandas .append() 方法已被弃用,那么它是替代 Pandas 的好方法吗?

我经常使用以下方法将单行附加到数据帧。我真正喜欢它的一件事是它允许您附加一个简单的 dict 对象。例如:

# Creating an empty dataframe
df = pd.DataFrame(columns=['a', 'b'])

# Appending a row
df = df.append({ 'a': 1, 'b': 2 }, ignore_index=True)
Run Code Online (Sandbox Code Playgroud)

同样,我最喜欢的一点是代码非常干净并且只需要很少的行。现在我想推荐的替代方案是:

# Create the new row as its own dataframe
df_new_row = pd.DataFrame({ 'a': [1], 'b': [2] })
df = pd.concat([df, df_new_row])
Run Code Online (Sandbox Code Playgroud)

因此,之前的一行代码现在变成了两行,其中包含一个一次性变量和额外的内容,我在其中创建新的数据框。:( 有没有一种好方法可以做到这一点,只需使用像我过去那样的字典(未弃用)?

python dataframe pandas data-munging data-wrangling

156
推荐指数
5
解决办法
19万
查看次数

Pandas合并两个具有不同列的数据帧

我肯定在这里遗漏了一些简单的东西.尝试在大多数具有相同列名的pandas中合并两个数据帧,但右侧数据框有一些左侧没有的列,反之亦然.

>df_may

  id  quantity  attr_1  attr_2
0  1        20       0       1
1  2        23       1       1
2  3        19       1       1
3  4        19       0       0

>df_jun

  id  quantity  attr_1  attr_3
0  5         8       1       0
1  6        13       0       1
2  7        20       1       1
3  8        25       1       1
Run Code Online (Sandbox Code Playgroud)

我尝试加入外连接:

mayjundf = pd.DataFrame.merge(df_may, df_jun, how="outer")
Run Code Online (Sandbox Code Playgroud)

但那会产生:

Left data columns not unique: Index([....
Run Code Online (Sandbox Code Playgroud)

我还指定了一个要加入的列(on ="id",例如),但是复制除"id"之外的所有列,如attr_1_x,attr_1_y,这是不理想的.我还将整个列列表(有很多)传递给"on":

mayjundf = pd.DataFrame.merge(df_may, df_jun, how="outer", on=list(df_may.columns.values))
Run Code Online (Sandbox Code Playgroud)

产量:

ValueError: Buffer has wrong number of dimensions …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas data-munging

37
推荐指数
2
解决办法
6万
查看次数

Python:支持索引的内存对象数据库?

我正在做一些数据修改,如果我可以在内存数据库中粘贴一堆字典,然后对它进行简单的查询,那将会更加简单.

例如,类似于:

people = db([
    {"name": "Joe", "age": 16},
    {"name": "Jane", "favourite_color": "red"},
])
over_16 = db.filter(age__gt=16)
with_favorite_colors = db.filter(favorite_color__exists=True)
Run Code Online (Sandbox Code Playgroud)

但有三个混淆因素:

  • 一些值将是Python对象,并且序列化它们是不可能的(太慢,破坏身份).当然,我可以解决这个问题(例如,将所有项目存储在一个大的列表中,然后在列表中序列化它们的索引......但这可能需要花费一些时间).
  • 将有数千个数据,我将针对它们运行查找繁重的操作(如图遍历),因此必须能够执行高效(即索引)查询.
  • 如在示例中,数据是非结构化的,因此要求我预定义模式的系统将是棘手的.

那么,这样的事情存在吗?或者我需要一起解决问题吗?

python database data-munging

26
推荐指数
3
解决办法
2万
查看次数

从CSV文件中删除空格

我需要从我读过的CSV文件中划分空格

import csv

aList=[]
with open(self.filename, 'r') as f:
    reader = csv.reader(f, delimiter=',', quoting=csv.QUOTE_NONE)
    for row in reader:
        aList.append(row)
    # I need to strip the extra white space from each string in the row
    return(aList)
Run Code Online (Sandbox Code Playgroud)

python csv data-munging

25
推荐指数
4
解决办法
4万
查看次数

如何将python datetime.datetime转换为excel序列号

我需要将日期转换为Excel序列号,以用于我正在编写的数据修改脚本.通过在我的OpenOffice Calc工作簿中播放日期,我能够推断出'1-Jan 1899 00:00:00'映射到数字零.

我编写了以下函数来将python datetime对象转换为Excel序列号:

def excel_date(date1):
    temp=dt.datetime.strptime('18990101', '%Y%m%d')
    delta=date1-temp
    total_seconds = delta.days * 86400 + delta.seconds
    return total_seconds
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试一些示例日期时,数字与我在Excel中格式化日期时所获得的数字不同(以及OpenOffice Calc).例如,测试'2009-03-20'在Python中给出3478032000,而excel将序列号呈现为39892.

上面的公式出了什么问题?

*注意:我使用的是Python 2.6.3,因此无法访问datetime.total_seconds()

python excel datetime data-munging

16
推荐指数
3
解决办法
3万
查看次数

哪种Perl模块有利于数据整理?

九年前,当我开始使用Perl解析HTML和自由文本时,我阅读了Perl的经典Data Munging.有人知道大卫是否打算更新这本书,或者是否有类似的书籍或网页,其中解释了像XML-Twig,Regexp-Grammars等新的解析模块?

我假设在过去的九年中,一些模块仍然和它们一样好,有些模块是最新的,但有一些新的有趣方法,有些还有更好的替代方法.例如,Parse-RecDescent仍然是自由文本解析的唯一选择,还是Perl 6影响的Regexp-Grammars在许多场景中的替代?

我已经四年没有使用Perl进行有效的HTML,XML或自由文本数据挖掘了,所以我这个领域的工具包可能有点过时了.因此,对于与该领域当前CPAN模块最新的人员而言,HTML和DOM操作,链接提取/验证,Web测试(如Mechanize,XML操作和自由文本解析)的任何反馈都将受到欢迎.

我的工具包的一些新增内容:

还在我的工具箱中:

perl text-parsing html-parsing xml-parsing data-munging

11
推荐指数
1
解决办法
953
查看次数

如何将我的pandas数据帧移动到d3?

我是Python的新手,并且已经通过几本书来解决它.除了可视化之外,一切都很棒.我真的不喜欢matplotlib和Bokeh需要太重的堆栈.

我想要的工作流程是:

使用ipython笔记本中的pandas进行数据分析 - >使用sublimetext2中的d3进行可视化

但是,作为Python和d3的新手,我不知道将我的pandas数据框导出到d3的最佳方法.我应该把它作为csv吗?JSON?还是有更直接的方式?

附带问题:是否有任何(合理的)方法在ipython笔记本中执行所有操作而不是切换到sublimetext?

任何帮助,将不胜感激.

ipython pandas d3.js data-munging

11
推荐指数
1
解决办法
9715
查看次数

由Timestamp对象组成的Pandas系列的min()和max()方法的意外结果

我在进行基本数据调整时遇到了这种行为,如下例所示:

In [55]: import pandas as pd
In [56]: import numpy as np
In [57]: rng = pd.date_range('1/1/2000', periods=10, freq='4h')
In [58]: lvls = ['A','A','A','B','B','B','C','C','C','C']
In [59]: df = pd.DataFrame({'TS': rng, 'V' : np.random.randn(len(rng)), 'L' : lvls})

In [60]: df
Out[60]: 
   L                  TS         V
0  A 2000-01-01 00:00:00 -1.152371
1  A 2000-01-01 04:00:00 -2.035737
2  A 2000-01-01 08:00:00 -0.493008
3  B 2000-01-01 12:00:00 -0.279055
4  B 2000-01-01 16:00:00 -0.132386
5  B 2000-01-01 20:00:00  0.584091
6  C 2000-01-02 00:00:00 -0.297270
7 …
Run Code Online (Sandbox Code Playgroud)

python timestamp pandas data-munging

6
推荐指数
1
解决办法
6462
查看次数

python中r替代的rm()函数

如何删除python中的变量以清除python中的ram内存?

[R

a = 2 
rm(a)
Run Code Online (Sandbox Code Playgroud)

蟒蛇

a= 2
Run Code Online (Sandbox Code Playgroud)

如何清除单个变量或一组变量?

python r data-munging

6
推荐指数
1
解决办法
2490
查看次数

通过 pandas 中列名称的子字符串融化列(python)

我有数据框:

         subject           A_target_word_gd  A_target_word_fd B_target_word_gd  B_target_word_fd  subject_type 
           1                      1             2                3                    4             mild 
           2                      11            12               13                  14             moderate
Run Code Online (Sandbox Code Playgroud)

我想将其融合为一个数据框,如下所示:

     cond    subject    subject_type     value_type   value
      A         1        mild             gd           1           
      A         1        mild             fg           2           
      B         1        mild             gd           3            
      B         1        mild             fg           4  
      A         2        moderate         gd           11           
      A         2        moderate         fg           12           
      B         2        moderate         gd           13            
      B         2        moderate         fg           14          
...

...
Run Code Online (Sandbox Code Playgroud)

意思是,根据列名称的分隔符来融化。

最好的方法是什么?

dataframe melt pandas data-science data-munging

5
推荐指数
1
解决办法
1439
查看次数