javascript

java

python

c#

android

node.js

c++

reactjs

php

html

jquery

css

.net

ios

git

ruby-on-rails

sql

c

string

ruby

python-在Pandas数据框中查找唯一值,而不考虑行或列的位置

我有一个Pandas数据框,我想在该数据框中找到所有唯一的值...与行/列无关。 如果我有一个10 x 10的数据框,并假设它们有84个唯一值,那么我需要找到它们-而不是计数。

我可以创建一个集合并通过遍历数据框的行来添加每行的值。 但是,我认为它可能效率不高(无法证明这一点)。 有没有找到它的有效方法? 有预定义的功能吗?

trans by 2020-01-26T23:36:59Z

python-为什么熊猫内连接给ValueError:len(left_on)必须等于“ right”索引中的级别数?

我正在尝试将DataFrame A内部连接到DataFrame B,并且遇到错误。

这是我的加入声明:

merged = DataFrameA.join(DataFrameB, on=['Code','Date'])

这是错误:

ValueError: len(left_on) must equal the number of levels in the index of "right"

我不确定列顺序是否很重要(它们不是真正的“顺序”吗?),但以防万一,DataFrame的组织方式如下:

DataFrameA:  Code, Date, ColA, ColB, ColC, ..., ColG, ColH (shape: 80514, 8 - no index)
DataFrameB:  Date, Code, Col1, Col2, Col3, ..., Col15, Col16 (shape: 859, 16 - no index)

我需要更正我的加入声明吗? 还是有另一种更好的方法来获取这两个DataFrame的交集(或内部联接)?

trans by 2020-01-26T23:16:42Z

我要在熊猫DataFrame中将两列相乘并将结果添加到新列中

我正在尝试将pandas Dataframe(orders_df)中的两个现有列相乘-价格(股票收盘价)和Amount(股票数量),并将计算结果添加到名为“值”的新列中。 由于某种原因,当我运行此代码时,“值”列下的所有行均为正数,而某些行应为负数。 在DataFrame的“操作”列下,有七行带有“出售”字符串,七行带有“购买”字符串。

for i in orders_df.Action:
 if i  == 'Sell':
  orders_df['Value'] = orders_df.Prices*orders_df.Amount
 elif i == 'Buy':
  orders_df['Value'] = -orders_df.Prices*orders_df.Amount)

请让我知道我做错了!

trans by 2020-01-26T20:14:43Z

使用matplotlib的savefig保存从python熊猫生成的图(AxesSubPlot)

我正在使用熊猫从数据框生成图,我想将其保存到文件中:

dtf = pd.DataFrame.from_records(d,columns=h)
fig = plt.figure()
ax = dtf2.plot()
ax = fig.add_subplot(ax)
fig.savefig('~/Documents/output.png')

似乎使用matplotlib的savefig的最后一行应该可以解决问题。 但是该代码会产生以下错误:

Traceback (most recent call last):
  File "./testgraph.py", line 76, in <module>
    ax = fig.add_subplot(ax)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/figure.py", line 890, in add_subplot
    assert(a.get_figure() is self)
AssertionError

另外,尝试直接在图上调用savefig也会出错:

dtf2.plot().savefig('~/Documents/output.png')


  File "./testgraph.py", line 79, in <module>
    dtf2.plot().savefig('~/Documents/output.png')
AttributeError: 'AxesSubplot' object has no attribute 'savefig'

我想我需要以某种方式将plot()返回的子图添加到图中以便使用savefig。 我也想知道这是否与AxesSubPlot类背后的魔术有关。

编辑:

以下作品(无错误),但留下空白页面图像。

fig = plt.figure()
dtf2.plot()
fig.savefig('output.png')

编辑2:下面的代码也可以正常工作

dtf2.plot().get_figure().savefig('output.png')
trans by 2020-01-26T16:09:41Z

python-熊猫:每组均值填充缺失值

这应该很简单,但是我发现的最接近的是这篇文章:大熊猫:填补小组中的缺失价值观,但我仍然无法解决我的问题...。

假设我有以下数据框

df = pd.DataFrame({'value': [1, np.nan, np.nan, 2, 3, 1, 3, np.nan, 3], 'name': ['A','A', 'B','B','B','B', 'C','C','C']})

  name  value
0    A      1
1    A    NaN
2    B    NaN
3    B      2
4    B      3
5    B      1
6    C      3
7    C    NaN
8    C      3

我想在每个“名称”组中用平均值填写“ NaN”,即

      name  value
0    A      1
1    A      1
2    B      2
3    B      2
4    B      3
5    B      1
6    C      3
7    C      3
8    C      3

我不确定要去哪里:

grouped = df.groupby('name').mean()

谢谢你

trans by 2020-01-26T01:49:49Z

python-在熊猫中满足某些条件的地方更新行值

说我有以下数据框:

table

更新流为2的feat和another_feat列的值的最有效方法是什么?

是这个吗?

for index, row in df.iterrows():
    if df1.loc[index,'stream'] == 2:
       # do something

更新:如果我有超过100列怎么办? 我不想显式命名要更新的列。 我想将每列的值除以2(流列除外)。

所以要明确我的目标是:

将所有值除以具有流2的所有行的2,但不更改流列

trans by 2020-01-24T22:03:59Z

python-如何通过正则表达式从数据框中选择列

我在python熊猫中有一个数据框。 数据框的结构如下:

   a    b    c    d1   d2   d3 
   10   14   12   44  45    78

我想选择以d开头的列。 有没有一种简单的方法可以在python中实现这一点。

trans by 2020-01-24T17:17:36Z

python-如何在熊猫中实现具有多个列的布尔搜索

我有一个pandas df,并希望按照以下原则(以SQL术语)完成一些工作:

SELECT * FROM df WHERE column1 = 'a' OR column2 = 'b' OR column3 = 'c' etc.

现在,这适用于一个列/值对:

foo = df.loc[df['column']==value]

但是,我不确定如何将其扩展为多个列/值对。

  • 为了清楚起见,每一列都匹配一个不同的值。
trans by 2020-01-23T19:40:30Z

python pandas从日期时间中提取年份--- df ['year'] = df ['date']。year不起作用

抱歉,这个问题似乎是重复的-我希望答案会让我觉得自己像骨头一样……但是我对使用类似问题的答案感到不满意。

我正在通过conda update pandas conda install pandas==0.15.2 conda install -f pandas导入数据,但是由于某种原因(我无法弄清),我无法从数据框系列df['date']中提取年份或月份。

date    Count
6/30/2010   525
7/30/2010   136
8/31/2010   125
9/30/2010   84
10/29/2010  4469

df = pd.read_csv('sample_data.csv',parse_dates=True)

df['date'] = pd.to_datetime(df['date'])

df['year'] = df['date'].year
df['month'] = df['date'].month

但这返回:

AttributeError:“系列”对象没有属性“年份”

提前致谢。

更新:

df = pd.read_csv('sample_data.csv',parse_dates=True)

df['date'] = pd.to_datetime(df['date'])

df['year'] = df['date'].dt.year
df['month'] = df['date'].dt.month

这将生成相同的“ AttributeError:“ Series”对象没有属性“ dt””

跟进:

我正在将Spyder 2.3.1与Python 3.4.1 64位一起使用,但是无法将熊猫更新为较新的版本(当前为0.14.1)。 以下每个都会生成无效的语法错误:

conda update pandas

conda install pandas==0.15.2

conda install -f pandas

有任何想法吗?

trans by 2020-01-20T01:24:40Z

python-熊猫:通过实验室获取唯一的MultiIndex级别值

假设您有以下MultiIndex版本的DataFrame:

df = pd.DataFrame({'co':['DE','DE','FR','FR'],
                   'tp':['Lake','Forest','Lake','Forest'],
                   'area':[10,20,30,40],
                   'count':[7,5,2,3]})
df = df.set_index(['co','tp'])

看起来像这样:

           area  count
co tp
DE Lake      10      7
   Forest    20      5
FR Lake      30      2
   Forest    40      3

我想检索每个索引级别的唯一值。 这可以通过使用

df.index.levels[0]  # returns ['DE', 'FR]
df.index.levels[1]  # returns ['Lake', 'Forest']

我真正想做的是通过按名称(即'co''tp')寻址这些级别来检索这些列表。我能找到的最短的两种方法如下所示:

list(set(df.index.get_level_values('co')))  # returns ['DE', 'FR']
df.index.levels[df.index.names.index('co')]  # returns ['DE', 'FR']

但是他们都不是非常优雅。 有没有更短的方法?

trans by 2020-01-19T18:18:39Z

numpy-在给定稀疏矩阵数据的情况下,Python中计算余弦相似度的最快方法是什么?

给定稀疏的矩阵列表,计算矩阵中各列(或行)之间的余弦相似度的最佳方法是什么? 我宁愿不重复两次选择。

说输入矩阵为:

A= 
[0 1 0 0 1
 0 0 1 1 1
 1 1 0 1 0]

稀疏表示为:

A = 
0, 1
0, 4
1, 2
1, 3
1, 4
2, 0
2, 1
2, 3

在Python中,使用矩阵输入格式很简单:

import numpy as np
from sklearn.metrics import pairwise_distances
from scipy.spatial.distance import cosine

A = np.array(
[[0, 1, 0, 0, 1],
[0, 0, 1, 1, 1],
[1, 1, 0, 1, 0]])

dist_out = 1-pairwise_distances(A, metric="cosine")
dist_out

给出:

array([[ 1.        ,  0.40824829,  0.40824829],
       [ 0.40824829,  1.        ,  0.33333333],
       [ 0.40824829,  0.33333333,  1.        ]])

对于全矩阵输入来说,这很好,但是我真的想从稀疏表示开始(由于矩阵的大小和稀疏性)。 关于如何最好地实现的任何想法? 提前致谢。

trans by 2020-01-19T08:17:31Z

删除熊猫数据框中的NaN / NULL列?

我在熊猫中有一个dataFrame,其中几列都为空值。 是否有内置功能可以让我删除这些列?

trans by 2020-01-18T19:20:07Z

python-将数组或DataFrame与其他信息一起保存在文件中

统计软件Stata允许将短文本片段保存在数据集中。 这可以使用NumPy和/或NumPy完成。

这对我来说是非常有价值的功能,因为它使我可以保存各种信息,从提醒和待办事项列表到有关我如何生成数据甚至特定变量的估算方法的信息。

我现在试图在Python 3.6中提出类似的功能。 到目前为止,我已经在网上查看并咨询了许多帖子,但是这些帖子并不能完全解决我想要做的事情。

一些参考文章包括:

  • 在磁盘上保留numpy数组的最佳方法

  • 将熊猫数据框保存到pickle和csv之间有什么区别?

  • 在笔记本中上传大型csv文件以使用python熊猫的最快方法是什么?

  • 如何查看npz文件中的数据对象内容?

对于小型NumPy阵列,我得出的结论是,函数NumPyPandas的组合可以在单个文件中充分存储所有相关信息。

例如:

a = np.array([[2,4],[6,8],[10,12]])
d = {"first": 1, "second": "two", "third": 3}

np.savez(whatever_name.npz, a=a, d=d)
data = np.load(whatever_name.npz)

arr = data['a']
dic = data['d'].tolist()

但是,问题仍然存在:

是否存在更好的方法来将其他信息潜在地合并到包含NumPy阵列或(大)Pandas DataFrame的文件中?

我特别想听听您可能对示例提出的任何建议的利弊。 依赖性越少越好。

trans by 2020-01-16T19:14:01Z

python-熊猫-从字典向数据框添加新列

这个问题已经在这里有了答案:

  • 用字典重新映射熊猫列中的值                                     8个答案

我想像这样向数据框添加列“ D”:

U,L
111,en
112,en
112,es
113,es
113,ja
113,zh
114,es

根据以下字典:

d = {112: 'en', 113: 'es', 114: 'es', 111: 'en'}

因此结果数据框显示为:

U,L,D
111,en,en
112,en,en
112,es,en
113,es,es
113,ja,es
113,zh,es
114,es,es

到目前为止,我尝试了pd.join()方法,但无法弄清楚它如何与Dictionary一起工作。

trans by 2020-01-16T05:04:59Z

python-熊猫左外联接结果大于左选项卡的表

根据我对左外部联接的了解,结果表的行数永远不能超过左表的行数......如果这是错误的话,请告诉我...

我的左表是192572行和8列。

我的右边表格是42160行和5列。

我的左表有一个名为“ id”的字段,该字段与我的右表中名为“键”的一列匹配。

因此,我将它们合并为:

combined = pd.merge(a,b,how='left',left_on='id',right_on='key')

但是组合的形状是236569。

我有什么误会?

trans by 2020-01-15T09:14:48Z

python-熊猫数据框和计数中选定列的值的唯一组合

我的数据在pandas数据框中,如下所示:

df1 = pd.DataFrame({'A':['yes','yes','yes','yes','no','no','yes','yes','yes','no'],
                   'B':['yes','no','no','no','yes','yes','no','yes','yes','no']})

所以我的数据看起来像这样

----------------------------
index         A        B
0           yes      yes
1           yes       no
2           yes       no
3           yes       no
4            no      yes
5            no      yes
6           yes       no
7           yes      yes
8           yes      yes
9            no       no
-----------------------------

我想将其转换为另一个数据框。 预期的输出可以在以下python脚本中显示:

output = pd.DataFrame({'A':['no','no','yes','yes'],'B':['no','yes','no','yes'],'count':[1,2,4,3]})

因此,我的预期输出如下所示

--------------------------------------------
index      A       B       count
--------------------------------------------
0         no       no        1
1         no      yes        2
2        yes       no        4
3        yes      yes        3
--------------------------------------------

实际上,我可以使用以下命令找到所有组合并对其进行计数:mytable = df1.groupby(['A','B']).size()

但是,事实证明,此类组合在单个列中。 我想将组合中的每个值分隔到不同的列中,并且还要为计数结果增加一列。 有可能这样做吗? 请问您有什么建议吗? 先感谢您。

trans by 2020-01-14T16:21:27Z

python-Seaborn在热图中显示3位数字的科学计数法

我正在从pandasivot_table创建一个热图,如下所示:

table2 = pd.pivot_table(df,values='control',columns='Year',index='Region',aggfunc=np.sum)
sns.heatmap(table2,annot=True,cmap='Blues')

它将创建一个热图,如下所示。 您可以看到数字不是很大(最大750),但是它以科学计数法显示它们。 如果我查看表格本身,情况并非如此。 关于如何使它以简单的符号显示数字有任何想法吗?

Heatmap

trans by 2020-01-14T02:13:05Z

scikit-learn中的归类绝对缺失值

我有一些文本类型的列的熊猫数据。 这些文本列中包含一些NaN值。 我想做的是通过error: 'could not convert string to float: 'run1''估算那些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”是第一列中包含分类数据的普通(不丢失)值。

任何帮助将非常欢迎

trans by 2020-01-13T15:47:08Z

python-熊猫T检验

如果我想计算熊猫中两个类别的平均值,可以这样进行:

data = {'Category': ['cat2','cat1','cat2','cat1','cat2','cat1','cat2','cat1','cat1','cat1','cat2'],
        'values': [1,2,3,1,2,3,1,2,3,5,1]}
my_data = DataFrame(data)
my_data.groupby('Category').mean()

Category:     values:   
cat1     2.666667
cat2     1.600000

我有很多以这种方式格式化的数据,现在我需要做一个T检验,看看cat1和cat2的均值在统计上是否不同。 我怎样才能做到这一点?

trans by 2020-01-12T17:54:15Z

大熊猫-如何从多索引数据框中删除级别?

例如,我有:

In [1]: df = pd.DataFrame([8, 9],
                          index=pd.MultiIndex.from_tuples([(1, 1, 1),
                                                           (1, 3, 2)]),
                          columns=['A'])

In [2] df
Out[2]: 
       A
1 1 1  8
  3 2  9

是否有比这更好的方法从索引中删除最后一个级别:

In [3]: pd.DataFrame(df.values,
                     index=df.index.droplevel(2),
                     columns=df.columns)
Out[3]: 
     A
1 1  8
  3  9
trans by 2020-01-12T14:48:41Z

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 下一页 共18页