Questions tagged «pandas»

Pandas是用于数据处理和分析的Python库,例如,在统计,实验科学结果,计量经济学或金融学中常见的数据框,多维时间序列和横截面数据集。Pandas是Python中主要的数据科学库之一。

10
在scikit-learn中估算分类缺失值
我有一些文本类型的列的熊猫数据。这些文本列中包含一些NaN值。我想做的是通过sklearn.preprocessing.Imputer(用最常用的值替换NaN )来估算这些NaN 。问题在于实施。假设有一个具有30列的Pandas数据框df,其中10列属于分类性质。一旦我运行: from sklearn.preprocessing import Imputer imp = Imputer(missing_values='NaN', strategy='most_frequent', axis=0) imp.fit(df) Python会生成一个error: 'could not convert string to float: 'run1'',其中'run1'是带有分类数据的第一列中的普通(不丢失)值。 任何帮助将非常欢迎


3
熊猫系列的直方图值
我有一个Python熊猫系列的某些值(类型:pandas.core.series.Series) In [1]: series = pd.Series([0.0,950.0,-70.0,812.0,0.0,-90.0,0.0,0.0,-90.0,0.0,-64.0,208.0,0.0,-90.0,0.0,-80.0,0.0,0.0,-80.0,-48.0,840.0,-100.0,190.0,130.0,-100.0,-100.0,0.0,-50.0,0.0,-100.0,-100.0,0.0,-90.0,0.0,-90.0,-90.0,63.0,-90.0,0.0,0.0,-90.0,-80.0,0.0,]) In [2]: series.min() Out[2]: -100.0 In [3]: series.max() Out[3]: 950.0 我想获取直方图的值(不必绘制直方图)...我只需要获取每个间隔的频率即可。 假设我的间隔从[-200; -150]至[950; 1000] 所以下界是 lwb = range(-200,1000,50) 和上限是 upb = range(-150,1050,50) 我现在不知道如何获取频率(每个间隔内的值的数量)...我确定没有必要定义lwb和upb ...但是我不知道应该使用什么函数执行这个!(在学习了Pandas doc之后,我认为cut函数可以为我提供帮助,因为这是一个离散化问题...但是我不知道如何使用它) 能够做到这一点之后,我将看看显示直方图的方式(但这是另一个问题)

4
添加一列多数民众赞成在熊猫连续行差异的结果
可以说我有一个这样的数据框 A B 0 a b 1 c d 2 e f 3 g h 0、1、2、3是时间,a,c,e,g是一个时间序列,而b,d,f,h是另一个时间序列。我需要能够向原始数据帧添加两列,这是通过计算某些列的连续行的差异而获得的。 所以我需要这样的东西 A B dA 0 a b (a-c) 1 c d (c-e) 2 e f (e-g) 3 g h Nan 我在数据框/系列上看到了一个叫做diff的东西,但是它做的略有不同,因为第一个元素将变为Nan。

7
检查字符串是否在熊猫数据框中
我想看看数据框内的特定列中是否存在特定的字符串。 我遇到了错误 ValueError:系列的真值不明确。使用a.empty,a.bool(),a.item(),a.any()或a.all()。 import pandas as pd BabyDataSet = [('Bob', 968), ('Jessica', 155), ('Mary', 77), ('John', 578), ('Mel', 973)] a = pd.DataFrame(data=BabyDataSet, columns=['Names', 'Births']) if a['Names'].str.contains('Mel'): print "Mel is there"

7
如何使用几列中的值对熊猫数据框进行排序?
我有以下数据框: df = pandas.DataFrame([{'c1':3,'c2':10},{'c1':2, 'c2':30},{'c1':1,'c2':20},{'c1':2,'c2':15},{'c1':2,'c2':100}]) 或者,以人类可读的形式: c1 c2 0 3 10 1 2 30 2 1 20 3 2 15 4 2 100 以下排序命令按预期工作: df.sort(['c1','c2'], ascending=False) 输出: c1 c2 0 3 10 4 2 100 1 2 30 3 2 15 2 1 20 但是以下命令: df.sort(['c1','c2'], ascending=[False,True]) 结果是 c1 c2 …

18
PIP安装Numpy引发错误“ ascii编解码器无法解码字节0xe2”
我在新构建的计算机上全新安装了Ubuntu。我刚刚使用apt-get安装了python-pip。现在,当我尝试点安装Numpy和Pandas时,出现以下错误。 我已经在SO和Google的很多地方看到过提到此错误,但是我找不到解决方案。有人提到这是一个错误,有些线程已经死了……这是怎么回事? Traceback (most recent call last): File "/usr/bin/pip", line 9, in <module> load_entry_point('pip==1.5.4', 'console_scripts', 'pip')() File "/usr/lib/python2.7/dist-packages/pip/__init__.py", line 185, in main return command.main(cmd_args) File "/usr/lib/python2.7/dist-packages/pip/basecommand.py", line 161, in main text = '\n'.join(complete_log) UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 72: ordinal not in range(128)
67 python  numpy  pandas  pip 

3
关于多线程的Pandas和Numpy怪异错误
默认情况下,大多数Numpy函数都会启用多线程。 例如,如果我运行脚本,我将在8核Intel cpu工作站上工作 import numpy as np x=np.random.random(1000000) for i in range(100000): np.sqrt(x) linux top将在运行期间显示800%的cpu使用率,例如 numpy表示numpy自动检测到我的工作站具有8个核心,并np.sqrt自动使用所有8个核心来加速计算。 但是,我发现了一个奇怪的错误。如果我运行脚本 import numpy as np import pandas as pd df=pd.DataFrame(np.random.random((10,10))) df+df x=np.random.random(1000000) for i in range(100000): np.sqrt(x) CPU使用率是100%!! 这意味着,如果在运行任何numpy函数之前加上两个pandas DataFrame,则numpy的自动多线程功能将消失,而不会发出任何警告!这绝对是不合理的,为什么Pandas dataFrame计算会影响Numpy线程设置?是虫子吗?如何解决这个问题? PS: 我进一步使用Linux perf工具进行挖掘。 运行第一个脚本显示 运行第二个脚本时显示 因此,这两个脚本都涉及libmkl_vml_avx2.so,而第一个脚本则涉及其他libiomp5.so与openMP有关的脚本。 而且由于vml意味着intel向量数学库,所以根据vml doc,我猜至少下面的函数都是自动多线程的
25 python  pandas  numpy 

7
根据字典将新列添加到数据框
我有一个数据框和一个字典。我需要向数据框添加新列,并根据字典计算其值。 机器学习,基于一些表添加了新功能: score = {(1, 45, 1, 1) : 4, (0, 1, 2, 1) : 5} df = pd.DataFrame(data = { 'gender' : [1, 1, 0, 1, 1, 0, 0, 0, 1, 0], 'age' : [13, 45, 1, 45, 15, 16, 16, 16, 15, 15], 'cholesterol' : [1, 2, 2, …

7
检查pandas列是否包含列表中的所有元素
我有这样的df: frame = pd.DataFrame({'a' : ['a,b,c', 'a,c,f', 'b,d,f','a,z,c']}) 以及物品清单: letters = ['a','c'] 我的目标是从中获取frame至少包含2个元素的所有行。letters 我想出了以下解决方案: for i in letters: subframe = frame[frame['a'].str.contains(i)] 这给了我我想要的,但是就可伸缩性而言,它可能不是最佳的解决方案。是否有任何“向量化”解决方案?谢谢
20 python  pandas 

5
是否为每个变量解栈并返回值计数?
我有一个数据框,其中记录了19717人通过多项选择题对编程语言的选择的回答。第一栏当然是受访者的性别,其余则是他们选择的选项。因此,如果我选择Python,则我的响应将记录在Python列中,而不是bash,反之亦然。 ID Gender Python Bash R JavaScript C++ 0 Male Python nan nan JavaScript nan 1 Female nan nan R JavaScript C++ 2 Prefer not to say Python Bash nan nan nan 3 Male nan nan nan nan nan 我想要的是一个表,该表返回Gender记录下每个类别的实例数。因此,如果用Python用Python编码的5000名男性和用JS编码的3000名女性,那么我应该得到: Gender Python Bash R JavaScript C++ Male 5000 1000 800 …


3
如何将熊猫数据框转换为分层字典
我有以下熊猫数据框: df1 = pd.DataFrame({'date': [200101,200101,200101,200101,200102,200102,200102,200102],'blockcount': [1,1,2,2,1,1,2,2],'reactiontime': [350,400,200,250,100,300,450,400]}) 我正在尝试创建一个层次字典,将嵌入式字典的值作为列表,如下所示: {200101: {1:[350, 400], 2:[200, 250]}, 200102: {1:[100, 300], 2:[450, 400]}} 我该怎么做?我得到的最接近的是使用此代码: df1.set_index('date').groupby(level='date').apply(lambda x: x.set_index('blockcount').squeeze().to_dict()).to_dict() 哪个返回: {200101: {1: 400, 2: 250}, 200102: {1: 300, 2: 400}}
16 python  pandas 

4
有效地比较两列中的列表
当具有这样的Pandas DataFrame时: import pandas as pd import numpy as np df = pd.DataFrame({'today': [['a', 'b', 'c'], ['a', 'b'], ['b']], 'yesterday': [['a', 'b'], ['a'], ['a']]}) today yesterday 0 ['a', 'b', 'c'] ['a', 'b'] 1 ['a', 'b'] ['a'] 2 ['b'] ['a'] ... etc 但是,我希望通过大约10万个条目在行的基础上在两列中找到这些列表的添加和删除。 它可与以下问题相提并论:Pandas:如何将DataFrame中的列表列与Pandas(不是for循环)进行比较? 但我正在研究这些差异,而且Pandas.apply对于许多条目而言,方法似乎并不那么快。这是我当前正在使用的代码。Pandas.apply使用numpy's setdiff1d方法: additions = df.apply(lambda row: np.setdiff1d(row.today, …

5
在索引和插入行时防止强制熊猫数据帧
我正在处理熊猫数据帧的各个行,但在索引和插入行时遇到了强制问题。熊猫似乎总是想将int / float混合类型强制转换为全浮点类型,我看不出对此行为有任何明显的控制。 例如,这是一个带有aas int和bas 的简单数据框float: import pandas as pd pd.__version__ # '0.25.2' df = pd.DataFrame({'a': [1], 'b': [2.2]}) print(df) # a b # 0 1 2.2 print(df.dtypes) # a int64 # b float64 # dtype: object 在索引一行时,这是一个强制问题: print(df.loc[0]) # a 1.0 # b 2.2 # Name: 0, dtype: float64 …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.