javascript

java

python

c#

android

c++

node.js

php

html

jquery

ios

reactjs

css

.net

git

ruby-on-rails

sql

c

ruby

string

python-在'float'和'str'的实例之间不支持LabelEncoder:'>'

我面临多个变量甚至处理缺失值的错误。例如:

le = preprocessing.LabelEncoder()
categorical = list(df.select_dtypes(include=['object']).columns.values)
for cat in categorical:
    print(cat)
    df[cat].fillna('UNK', inplace=True)
    df[cat] = le.fit_transform(df[cat])
#     print(le.classes_)
#     print(le.transform(le.classes_))


---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-24-424a0952f9d0> in <module>()
      4     print(cat)
      5     df[cat].fillna('UNK', inplace=True)
----> 6     df[cat] = le.fit_transform(df[cat].fillna('UNK'))
      7 #     print(le.classes_)
      8 #     print(le.transform(le.classes_))

C:\Users\paula.ceccon.ribeiro\AppData\Local\Continuum\Anaconda3\lib\site-packages\sklearn\preprocessing\label.py in fit_transform(self, y)
    129         y = column_or_1d(y, warn=True)
    130         _check_numpy_unicode_bug(y)
--> 131         self.classes_, y = np.unique(y, return_inverse=True)
    132         return y
    133 

C:\Users\paula.ceccon.ribeiro\AppData\Local\Continuum\Anaconda3\lib\site-packages\numpy\lib\arraysetops.py in unique(ar, return_index, return_inverse, return_counts)
    209 
    210     if optional_indices:
--> 211         perm = ar.argsort(kind='mergesort' if return_index else 'quicksort')
    212         aux = ar[perm]
    213     else:

TypeError: '>' not supported between instances of 'float' and 'str'

检查导致错误的变量导致ins:

df['CRM do Médico'].isnull().sum()
0

除了nan值,什么可能导致此错误?

trans by 2020-07-17T16:47:58Z

在Pandas DataFrame Python中添加新列

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

  • 在Python Pandas中向现有DataFrame添加新列 22个答案

例如,我在熊猫中有数据框:

Col1 Col2
A     1 
B     2
C     3

现在,如果我想再添加一个名为Col3的列,并且该值基于Col2。 在公式中,如果Col2> 1,则Col3为0,否则为1。因此,在上面的示例中。 输出为:

Col1 Col2 Col3
A    1    1
B    2    0
C    3    0

关于如何实现这一点的任何想法?

trans by 2020-07-17T15:16:31Z

python-像Qlik一样在pandas数据框中的列中计算唯一值?

如果我有这样的表:

df = pd.DataFrame({
         'hID': [101, 102, 103, 101, 102, 104, 105, 101],
         'dID': [10, 11, 12, 10, 11, 10, 12, 10],
         'uID': ['James', 'Henry', 'Abe', 'James', 'Henry', 'Brian', 'Claude', 'James'],
         'mID': ['A', 'B', 'A', 'B', 'A', 'A', 'A', 'C']
})

我可以在Qlik中进行count(distinct hID),以得出5个唯一的hID。 我该如何在Python中使用Pandas数据框? 还是一个numpy的数组? 同样,如果这样做count(hID),我将在Qlik中得到8。 在大熊猫中做这件事的等效方法是什么?

trans by 2020-07-17T09:34:26Z

Python Pandas:读取Excel文件时如何指定数据类型?

我正在使用read_excel()函数将Excel文件导入熊猫数据框。

列之一是表格的主键:是所有数字,但以文本形式存储(Excel单元格左上角的绿色小三角形确认了这一点)。

但是,当我将文件导入pandas数据框时,该列将以浮点形式导入。 这意味着,例如,“ 0614”变为614。

导入列时是否可以指定数据类型? 我知道在导入CSV文件时这是可能的,但找不到read_excel()语法中的任何内容。

我能想到的唯一解决方案是在Excel中的文本开头添加一个任意字母(将“ 0614”转换为“ A0614”),以确保将列作为文本导入,然后切掉“ A” 在python中,因此我可以将其与我从SQL导入的其他表进行匹配。

trans by 2020-07-17T09:30:21Z

python-使用pd.eval()在熊猫中进行动态表达评估

给定两个数据框

np.random.seed(0)
df1 = pd.DataFrame(np.random.choice(10, (5, 4)), columns=list('ABCD'))
df2 = pd.DataFrame(np.random.choice(10, (5, 4)), columns=list('ABCD'))

df1
   A  B  C  D
0  5  0  3  3
1  7  9  3  5
2  2  4  7  6
3  8  8  1  6
4  7  7  8  1

df2
   A  B  C  D
0  5  9  8  9
1  4  3  0  3
2  5  0  2  3
3  8  1  3  3
4  3  7  0  1

我想使用engine对一列或多列执行算术运算。具体地说,我想移植以下代码:

x = 5
df2['D'] = df1['A'] + (df1['B'] * x) 

...使用engine进行编码。使用eval的原因是我想自动执行许多工作流程,因此动态创建它们对我很有用。

我试图更好地理解enginex参数,以确定如何最好地解决我的问题。 我已经阅读了文档,但对我来说区别并不明显。

  1. 应该使用什么参数来确保我的代码以最高性能工作?
  2. 有没有一种方法可以将表达式的结果分配回x
  3. 另外,为了使事情更复杂,如何在字符串表达式中将x作为参数传递?
trans by 2020-07-13T17:34:13Z

python-从熊猫返回多个值适用于DataFrame

我正在使用Pandas apply按照此示例进行逐行t检验:

import numpy
import pandas

df = pandas.DataFrame(numpy.log2(numpy.randn(1000, 4), 
                      columns=["a", "b", "c", "d"])

df = df.dropna()

现在,假设我将“ a”和“ b”作为一组,而将“ c”和“ d”作为另一组,则我正在逐行执行t检验。 对于大熊猫来说,这是微不足道的,使用轴= 1的apply。 但是,如果函数未聚合,则可以返回相同形状的DataFrame;如果聚合,则可以返回Series。

通常,我只输出p值(所以,是聚合),但我想基于其他计算生成一个附加值(换句话说,返回两个值)。 我当然可以进行两次运行,先汇总p值,然后再进行其他工作,但是我想知道是否存在更有效的方法,因为数据相当大。

作为计算的示例,假设函数为:

from scipy.stats import ttest_ind

def t_test_and_mean(series, first, second):
    first_group = series[first]
    second_group = series[second]
    _, pvalue = ttest_ind(first_group, second_group)

    mean_ratio = second_group.mean() / first_group.mean()

    return (pvalue, mean_ratio)

然后用

df.apply(t_test_and_mean, first=["a", "b"], second=["c", "d"], axis=1)

当然,在这种情况下,它将返回一个带有两个元组作为值的单个Series。

相反,任何预期的输出将是具有两列的DataFrame,第一列用于第一结果,第二列用于第二结果。 这是否可能,或者我必须对两个计算进行两次运行,然后将它们合并在一起?

trans by 2020-07-13T08:41:14Z

python-如何选择数据框的最后一列

我已经做了一些寻找该问题答案的搜索,但是我能弄清楚的是:

df[df.columns[len(df.columns)-1]]

在我看来,这似乎很笨拙,而且很怪异(而且很慢?)。

在不指定列名的情况下,为pandas数据框中的最后一列选择数据的最简单方法是什么?

trans by 2020-07-13T05:40:11Z

python-在datetime和Pandas Timestamp对象之间转换

我有以下几点:

> date1
Timestamp('2014-01-23 00:00:00', tz=None)

> date2
datetime.date(2014, 3, 26)

我在这个答案上读到我可以使用pandas.to_datetime()Timestamps对象转换为datetime对象,但是它似乎不起作用:

> pd.to_datetime(date1)   
Timestamp('2014-01-23 00:00:00', tz=None)

为什么? 如何在这两种格式之间转换?

trans by 2020-07-12T20:28:16Z

Python Pandas:具有aggfunc的数据透视表=计数唯一的区别

df2 = pd.DataFrame({'X' : ['X1', 'X1', 'X1', 'X1'], 'Y' : ['Y2','Y1','Y1','Y1'], 'Z' : ['Z3','Z1','Z1','Z2']})

    X   Y   Z
0  X1  Y2  Z3
1  X1  Y1  Z1
2  X1  Y1  Z1
3  X1  Y1  Z2

g=df2.groupby('X')

pd.pivot_table(g, values='X', rows='Y', cols='Z', margins=False, aggfunc='count')

追溯(最近一次通话):... AttributeError:“索引”对象 没有属性“索引”

如何获得数据透视表,其中包含一个DataFrame列与其他两个列的唯一值的计数?
是否有values_counts()的计数唯一? 我应该使用np.bincount()吗?

注意 我知道'Series'values_counts(),但是我需要一个数据透视表。


编辑:输出应为:

Z   Z1  Z2  Z3
Y             
Y1   1   1 NaN
Y2 NaN NaN   1
trans by 2020-07-12T18:23:33Z

python-为熊猫更新iterrow中的值

我正在做一些地理编码工作,我使用了2963082145145973142528来筛选我需要的位置地址的xy坐标,我将xls文件导入了panda数据框,并希望使用显式循环来更新没有xy坐标的行, 如下所示:

for index, row in rche_df.iterrows():
    if isinstance(row.wgs1984_latitude, float):
        row = row.copy()
        target = row.address_chi        
        dict_temp = geocoding(target)
        row.wgs1984_latitude = dict_temp['lat']
        row.wgs1984_longitude = dict_temp['long']

我已经阅读了为什么遍历大熊猫DataFrame之后该功能不能“使用”? 并且完全意识到,iterrow仅提供给我们一个视图,而不是一个供编辑的副本,但是如果我真的要逐行更新值怎么办? lambda是否可行?

trans by 2020-07-12T10:52:48Z

python-给定一个表示值频率的pandas系列,如何将这些频率转换为百分比?

我正在试验kaggle.com泰坦尼克号数据集(泰坦尼克号上每个人的数据),并得出了如下性别分类:

gender = df.sex.value_counts()
gender

male   577
female 314 

我想找出泰坦尼克号上每种性别的百分比。

我的方法有点不理想:

from __future__ import division
pcts = gender / gender.sum()
pcts

male      0.647587
female    0.352413

有更好的(更惯用的)方法吗?

谢谢!

trans by 2020-07-12T07:03:29Z

防止熊猫将字符串中的“ NA”解释为NaN

熊猫的read_csv()方法将'NA'解释为nan(不是数字),而不是有效的字符串。

在下面的简单情况下,请注意,第1行第2列(基于零的计数)的输出为'nan'而不是'NA'。

sample.tsv(制表符分隔)

PDB CHAIN SP_PRIMARY RES_BEG RES_END PDB_BEG PDB_END SP_BEG SP_END
5d8b N P60490 1146 1146 1146年
5d8b不适用P80377 1 126 1 126 1 126
5d8b O P60491 1118 1118 1118

read_sample.py

import pandas as pd

df = pd.read_csv(
    'sample.tsv',
    sep='\t',
    encoding='utf-8',
)

for df_tuples in df.itertuples(index=True):
    print(df_tuples)

输出

(0,拥抱,拥抱,腋下0490,1,146,1,146,1,146)
(1,u'5d8b',u u'P80377',1,126,1,126,1,126)
(2,u'5d8b',u'O',u'P60491',1,118,1,118,1,118)

附加信息

用'CHAIN'列中的数据引号重写文件,然后使用quotechar参数quotechar='\''具有相同的结果。 并通过dtype参数dtype=dict(valid_cols)传递类型的字典不会更改结果。

防止read_csv中的熊猫自动推断类型的旧答案建议首先使用numpy记录数组来解析文件,但是鉴于现在可以指定列dtypes,因此不必这样做。

请注意,按照iterrows文档中的描述,itertuples()用于保留dtype:“要在迭代行时保留dtype,最好使用itertuples()返回值的元组,并且通常在迭代时更快。”

该示例已在Python 2和3上使用pandas版本0.16.2、0.17.0和0.17.1进行了测试。


有没有办法捕获有效的字符串'NA'而不是将其转换为nan?

trans by 2020-07-12T00:34:05Z

合并熊猫数据框,其中一个值介于其他两个值之间

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

  • 如何将列值在一定范围内的两个数据框合并? 5个答案

我需要在一个标识符和一个数据帧中的日期位于另一个数据帧中的两个日期之间的条件和条件下合并两个熊猫数据帧。

数据框A具有日期(“ fdate”)和ID(“ cusip”):

enter image description here

我需要将此与此数据框B合并:

enter image description here

A.cusip==B.ncusipA.fdate上的位置在B.namedtB.nameenddt之间。

在SQL中,这是微不足道的,但是我看到的如何在pandas中做到这一点的唯一方法是,首先在标识符上无条件合并,然后在日期条件上进行过滤:

df = pd.merge(A, B, how='inner', left_on='cusip', right_on='ncusip')
df = df[(df['fdate']>=df['namedt']) & (df['fdate']<=df['nameenddt'])]

这真的是最好的方法吗? 似乎最好是在合并中进行过滤,以避免合并之后但在过滤完成之前具有非常大的数据帧。

trans by 2020-07-09T12:04:38Z

numpy:如果numpy数组为vi,则可靠(非保守)指示符

寻找一种可靠地识别numpy对象是否为视图的方法。

相关问题以前(这里,这里,这里)已经提出很多次了,人们已经提供了一些解决方案,但是所有人似乎都存在问题:

  • 现在,在flags['OWNDATA'])中使用的测试是将某个视图称为my_array.base is not None。这似乎总是在捕获视图,但是还提供了许多误报(即使报告不是,它也会报告某个视图)。
  • flags['OWNDATA'])将检查两个特定的数组,但不会一般性地回答
    • (@RobertKurn说,2012年是最好的工具-有什么变化吗?)
  • 在某些情况下,报告flags['OWNDATA'])(第三个评论为第一个答案)失败。

(我感兴趣的原因是我正在为熊猫实现写时复制,而保守的指标会导致过度复制。)

trans by 2020-07-08T20:07:08Z

python-在PyCharm的内置缺点中获得更广泛的输出

我使用PyCharm IDE相对较新,并且在内置控制台会话中无法找到更好地调整输出形状的方法。 我通常使用的是相当宽的数据帧,可以很容易地安装在我的显示器上,但是显示器要比所需的切割和包裹快得多。

是否有人知道可以更改此行为以利用屏幕的整个宽度的设置?

编辑:我没有足够的声誉来发布屏幕截图,但是下面的链接是:[http://imgur.com/iiBK3iU]

我想防止它仅在几列之后换行(例如,列“ ReadmitRate”应紧接在“ SNFDaysPerSNFCase”的右侧)

trans by 2020-07-08T18:26:21Z

计算Python / Pandas中两行之间的差异

在python中,如何引用上一行并针对它计算一些内容? 具体来说,我正在使用pandas中的dataframes-我有一个充满股票价格信息的数据框,看起来像这样:

           Date   Close  Adj Close
251  2011-01-03  147.48     143.25
250  2011-01-04  147.64     143.41
249  2011-01-05  147.05     142.83
248  2011-01-06  148.66     144.40
247  2011-01-07  147.93     143.69

这是我创建此数据框的方法:

import pandas

url = 'http://ichart.finance.yahoo.com/table.csv?s=IBM&a=00&b=1&c=2011&d=11&e=31&f=2011&g=d&ignore=.csv'
data = data = pandas.read_csv(url)

## now I sorted the data frame ascending by date 
data = data.sort(columns='Date')

从第2行开始,或者在这种情况下,我想是250(PS-是索引吗?),我想为此数据帧中的每个条目计算2011-01-03和2011-01-04之间的差 。 我相信适当的方法是编写一个函数,该函数采用当前行,然后找出前一行,并计算它们之间的差,使用pandas apply函数用该值更新数据帧。

那是正确的方法吗? 如果是这样,我是否应该使用索引来确定差异? (注意-我仍处于python初学者模式,因此index可能不是正确的术语,甚至不是实现此目标的正确方法)

trans by 2020-07-07T20:27:55Z

如何从pandas DataFrame中删除列名行?

说我将以下Excel电子表格导入到df中

Val1 Val2 Val3
1     2    3 
5     6    7 
9     1    2

如何删除列名行(在本例中为Val1,Val2,Val3),以便我可以导出没有列名,仅数据的csv?

我已经尝试过df.drop和df.ix [1:],但都没有成功。

trans by 2020-07-07T12:56:25Z

python-使用SQLAlchemy to_sq使用熊猫写入MySQL数据库

尝试使用to_sql将pandas数据帧写入MySQL表。以前使用过flavor='mysql',但是将来会贬值,希望开始过渡到使用SQLAlchemy引擎。

样例代码:

import pandas as pd
import mysql.connector
from sqlalchemy import create_engine

engine = create_engine('mysql+mysqlconnector://[user]:[pass]@[host]:[port]/[schema]', echo=False)
cnx = engine.raw_connection()
data = pd.read_sql('SELECT * FROM sample_table', cnx)
data.to_sql(name='sample_table2', con=cnx, if_exists = 'append', index=False)

读取工作正常,但to_sql出现错误:

DatabaseError:对sql'SELECT name from sqlite_master的执行失败 WHERE type ='table'AND name = ?;':期间的参数数量错误 字符串格式

为什么看起来要使用sqlite? sqlalchemy与mysql特别是mysql.connector的正确使用是什么?

我也尝试将引擎作为连接传递,这给了我一个错误,该错误没有引用任何游标对象。

data.to_sql(name='sample_table2', con=engine, if_exists = 'append', index=False)
>>AttributeError: 'Engine' object has no attribute 'cursor'
trans by 2020-07-07T12:22:05Z

python-使用pandas.to_csv时如何指定日期格式?

默认输出格式to_csv()为:

12/14/2012  12:00:00 AM

我无法弄清楚如何仅输出具有特定格式的日期部分:

20121214

或csv文件中两个单独列中的日期和时间:

20121214,  084530

该文档太简短,无法给我任何有关如何执行这些操作的线索。 有人可以帮忙吗?

trans by 2020-07-07T10:10:47Z

python pandas dataframe按日期条件切片

我能够使用python datetime对象读取和切片pandas数据帧,但是我只能在索引中使用现有的日期。 例如,这有效:

>>> data
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 252 entries, 2010-12-31 00:00:00 to 2010-04-01 00:00:00
Data columns:
Adj Close    252  non-null values
dtypes: float64(1)

>>> st = datetime.datetime(2010, 12, 31, 0, 0)
>>> en = datetime.datetime(2010, 12, 28, 0, 0)

>>> data[st:en]
            Adj Close
Date                 
2010-12-31     593.97
2010-12-30     598.86
2010-12-29     601.00
2010-12-28     598.92

但是,如果我使用DF中不存在的开始或结束日期,则会收到python KeyError。

我的问题:如何查询数据框对象的日期范围; 即使DataFrame中没有开始日期和结束日期。 熊猫是否允许基于范围的切片?

我正在使用熊猫0.10.1版

trans by 2020-07-06T15:18:01Z

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