javascript

git

python

java

git-remote

github

django

c#

reactjs

c++

validation

email-validation

undefined

scrum

kubernetes

ruby-on-rails

.net

.net-framework-version

operators

git-fetch

python-Spark DataFrame方法“ toPandas”实际上在做什么?

我是Spark-DataFrame API的初学者。

我使用此代码将制表符分隔的csv加载到Spark Dataframe中

lines = sc.textFile('tail5.csv')
parts = lines.map(lambda l : l.strip().split('\t'))
fnames = *some name list*
schemaData = StructType([StructField(fname, StringType(), True) for fname in fnames])
ddf = sqlContext.createDataFrame(parts,schemaData)

假设我用Spark从新文件中创建了DataFrame,并使用内置方法toPandas()将其转换为熊猫,

  • 是否将Pandas对象存储到本地内存?
  • 熊猫的低级计算是否全部由Spark处理?
  • 它是否公开了所有熊猫数据框功能?(我想是的)
  • Can I convert it toPandas and just be done with it, without so much touching DataFrame API?
trans by 2020-08-07T07:57:33Z

python-对于Pandas DataFrame,使用方括号或点访问列之间有什么区别?

即:

import pandas

d = {'col1': 2, 'col2': 2.5}
df = pandas.DataFrame(data=d, index=[0])

print(df['col2'])
print(df.col2)

输出是相同的。

这个答案适用于这种情况吗?

Python中的方括号和点表示法之间有什么区别?

trans by 2020-08-07T01:12:56Z

python-列上的总和和百分比?

我有一个DataFrame像这样:

df.cumsum():

 fruit    val1 val2
0 orange    15    3
1 apple     10   13
2 mango     5    5 

如何获得熊猫仅在df.cumsum()上给我累计和百分比的列?

所需的输出:

df.cumsum():

 fruit    val1 val2   cum_sum    cum_perc
0 orange    15    3    15          50.00
1 apple     10   13    25          83.33
2 mango     5    5     30          100.00

我尝试了df.cumsum(),但它给了我这个错误:

TypeError:输入类型不支持ufunc'isnan',并且根据强制转换规则“ safe”,不能将输入安全地强制转换为任何受支持的类型

trans by 2020-08-06T22:59:13Z

熊猫枢纽警告有关索引上重复的条目

pivot方法的Pandas文档中,我们具有:

Examples
--------
>>> df
    foo   bar  baz
0   one   A    1.
1   one   B    2.
2   one   C    3.
3   two   A    4.
4   two   B    5.
5   two   C    6.

>>> df.pivot('foo', 'bar', 'baz')
     A   B   C
one  1   2   3
two  4   5   6

我的foo的结构如下:

   name   id     x
----------------------
0  john   1      0
1  john   2      0
2  mike   1      1
3  mike   2      0

我想要这样的东西:

      1    2   # (this is the id as columns)
----------------------
mike  0    0   # (and this is the 'x' as values)
john  1    0

但是当我运行foo方法时,它的意思是:

*** ReshapeError: Index contains duplicate entries, cannot reshape

这没有意义,即使在示例中,在foo列上也有重复的条目。 我将name列用作数据透视表的索引,即pivot方法调用的第一个参数。

trans by 2020-08-06T21:01:28Z

python-如何从包含列表的熊猫列中进行一次编码?

我想将由元素列表组成的pandas列分解为与唯一元素一样多的列(即one-hot-encode它们(值1表示行中存在的给定元素,如果值不存在则值为0)。

例如,以数据框df

Col1   Col2         Col3
 C      33     [Apple, Orange, Banana]
 A      2.5    [Apple, Grape]
 B      42     [Banana] 

我想将其转换为:

df

Col1   Col2   Apple   Orange   Banana   Grape
 C      33     1        1        1       0
 A      2.5    1        0        0       1
 B      42     0        0        1       0

如何使用pandas / sklearn实现此目的?

trans by 2020-08-06T13:54:08Z

python-熊猫识别的所有dtypes是什么?

对于大熊猫,有人会知道,除了

(i)pandasdtype(以及object的其他变体,例如float32int8等)

(ii)pandas

(iii)pandasdtype

例如字符串列,始终具有dtypepandas

或者,我想知道,除了上面的列表中的(i),(ii)和(iii)之外,是否还有其他数据类型,使得pandas不是dtype还是object

trans by 2020-08-06T06:02:05Z

datetime-使用Python在Pandas数据框中创建星期几列

使用Python在Pandas数据框中创建星期几列

我想将csv文件读取到pandas数据框中,将一列日期从字符串格式解析为date对象,然后生成一个新列以指示星期几。

这就是我正在尝试的:

我想做的是这样的:

import pandas as pd

import csv

df = pd.read_csv('data.csv', parse_dates=['date']))

df['day-of-week'] = df['date'].weekday()


AttributeError: 'Series' object has no attribute 'weekday'

谢谢您的帮助。詹姆士

trans by 2020-08-05T16:32:33Z

python-将Pandas数据框转换为csv字符串

这是我要获取的示例:

我有:

import pandas as pd 
df = pd.DataFrame({'A' : [0, 1], 'B' : [1, 6]})

我的目标是:

',A,B\n0,0,1\n1,1,6\n'

我可以通过懒惰和恐怖来实现:

df.to_csv('temp.csv') # create unnecessary file
body = open('temp.csv').read()

同样to_string()方法看起来非常有前途; 但是,我能想到的最好的方法是:

body = df.to_string()[1:].replace('  ', ',') + '\n'

这不会创建不必要的文件,但是看起来很草率,也许不是很可靠。

我是否缺少一个更简单的解决方案?

trans by 2020-08-03T11:19:49Z

numpy-Python Pandas-将某些列类型更改为类别

我已将以下CSV文件输入到iPython Notebook:

public = pd.read_csv("categories.csv")
public

我也将pdas导入为pd,将numpy导入为np,将matplotlib.pyplot导入为plt。 存在以下数据类型(以下是摘要-大约有100列)

In [36]:   public.dtypes
Out[37]:   parks          object
           playgrounds    object
           sports         object
           roading        object               
           resident       int64
           children       int64

我想将“公园”,“运动场”,“运动”和“道路”更改为类别(它们具有李克特量表响应-尽管每一列都有不同类型的李克特响应(例如,一个人“强烈同意”,“同意” 等),另一个具有“非常重要”,“重要”等),其余部分保留为int64。

我能够创建一个单独的数据框public1,并使用以下代码将其中一列更改为类别类型:

public1 = {'parks': public.parks}
public1 = public1['parks'].astype('category')

但是,当我尝试使用此代码一次更改数字时,我没有成功:

public1 = {'parks': public.parks,
           'playgrounds': public.parks}
public1 = public1['parks', 'playgrounds'].astype('category')

尽管如此,我不想仅使用类别列创建单独的数据框。 我希望它们在原始数据框中更改。

我尝试了多种方法来实现这一目标,然后在此处尝试了以下代码:Pandas:更改列的数据类型...

public[['parks', 'playgrounds', 'sports', 'roading']] = public[['parks', 'playgrounds', 'sports', 'roading']].astype('category')

并得到以下错误:

 NotImplementedError: > 1 ndim Categorical are not supported at this time

有没有一种方法可以将“公园”,“游乐场”,“运动”,“道路”更改为类别(这样就可以分析李克特量表的响应),剩下“居民”和“孩子”(以及其他94列 是字符串,整数+浮点数)吗? 还是有更好的方法来做到这一点? 如果有人有任何建议和/或反馈,我将不胜感激..am慢慢地秃头撕开我的头发!

提前谢谢了。

编辑添加-我正在使用Python 2.7。

trans by 2020-08-02T16:21:59Z

python-如何用z替换熊猫数据框中的负数

我想知道是否有某种方式将所有DataFrame负数替换为零?

trans by 2020-07-31T02:23:50Z

python-重命名Pandas Groupby函数中的列名

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

  • 使用pandas GroupBy.agg()对同一列进行多次聚合 3个答案

1)。 我有以下示例数据集:

>>> df
    ID     Region  count
0  100       Asia      2
1  101     Europe      3
2  102         US      1
3  103     Africa      5
4  100     Russia      5
5  101  Australia      7
6  102         US      8
7  104       Asia     10
8  105     Europe     11
9  110     Africa     23

我想通过ID和Region对这个数据集的观察结果进行分组,并对每个组的计数求和。 所以我用了这样的东西:

>>> print(df.groupby(['ID','Region'],as_index=False).count().sum())

    ID     Region  count
0  100       Asia      2
1  100     Russia      5
2  101  Australia      7
3  101     Europe      3
4  102         US      9
5  103     Africa      5
6  104       Asia     10
7  105     Europe     11
8  110     Africa     23

使用as_index = False时,我可以获得“类似于SQL”的输出。 我的问题是我无法在此处重命名聚合变量计数。 因此,在SQL中,如果想做上述事情,我会做这样的事情:

select ID, Region, sum(count) as Total_Numbers
from df
group by ID, Region
order by ID, Region

如我们所见,对我来说,在SQL中将聚合变量'count'重命名为Total_Numbers非常容易。 我想在Pandas中做同样的事情,但是在group-by函数中找不到这样的选项。 有人可以帮忙吗?

2)。 第二个问题以及更多的观察结果是,是否有可能直接在Pandas数据框函数中使用列名,而无需将其用引号引起来? 我知道变量名是字符串,因此必须在引号内,但是我看是否在数据框外使用函数,并且作为属性,我们不要求它们在引号内。 像df.ID.sum()等。仅当我们在df.sort()或df.groupby等DataFrame函数中使用它时,才必须在引号内使用它。 实际上,这有点麻烦,因为在SQL或SAS或其他语言中,我们仅使用变量名而不引用它们。 有什么建议吗?

请就以上两点提出建议(第一个观点,第二个观点)。

谢谢

trans by 2020-07-31T00:34:10Z

python-从MultiIndex的索引列获取唯一值

我知道可以通过重置索引来获取DataFrame的唯一值,但是有没有办法避免此步骤并直接获取唯一值?

鉴于我有:

        C
 A B     
 0 one  3
 1 one  2
 2 two  1

我可以:

df = df.reset_index()
uniq_b = df.B.unique()
df = df.set_index(['A','B'])

有熊猫内置的方法吗?

trans by 2020-07-30T21:03:10Z

python-按熊猫中的自定义列表排序

阅读后:[http://pandas.pydata.org/pandas-docs/version/0.13.1/genic/pandas.DataFrame.sort.html]

我似乎仍然无法弄清楚如何通过自定义列表对列进行排序。 显然,默认排序是字母顺序的。 我举一个例子。 这是我的(非常删节的)数据框:

             Player      Year   Age   Tm     G
2967     Cedric Hunter   1991    27  CHH     6
5335     Maurice Baker   2004    25  VAN     7
13950    Ratko Varda     2001    22  TOT     60
6141     Ryan Bowen      2009    34  OKC     52
6169     Adrian Caldwell 1997    31  DAL     81

我希望能够按播放器,年份和Tm进行排序。 按玩家和年份的默认排序对我来说是正常的。 但是,我不希望Team按字母B / c排序,而我希望TOT始终位于顶部。

这是我创建的列表:

sorter = ['TOT', 'ATL', 'BOS', 'BRK', 'CHA', 'CHH', 'CHI', 'CLE', 'DAL', 'DEN',
   'DET', 'GSW', 'HOU', 'IND', 'LAC', 'LAL', 'MEM', 'MIA', 'MIL',
   'MIN', 'NJN', 'NOH', 'NOK', 'NOP', 'NYK', 'OKC', 'ORL', 'PHI',
   'PHO', 'POR', 'SAC', 'SAS', 'SEA', 'TOR', 'UTA', 'VAN',
   'WAS', 'WSB']

阅读完上面的链接后,我认为这会起作用,但没有成功:

df.sort(['Player', 'Year', 'Tm'], ascending = [True, True, sorter])

它仍然在顶部具有ATL,这意味着它是按字母顺序而不是根据我的自定义列表排序的。 任何帮助将不胜感激,我只是想不通。

trans by 2020-07-30T17:27:01Z

python-重命名Pandas聚合中的结果列(“ FutureWarning:不建议将dict与重命名一起使用”)

我正在尝试对熊猫数据框进行一些聚合。 这是一个示例代码:

import pandas as pd

df = pd.DataFrame({"User": ["user1", "user2", "user2", "user3", "user2", "user1"],
                  "Amount": [10.0, 5.0, 8.0, 10.5, 7.5, 8.0]})

df.groupby(["User"]).agg({"Amount": {"Sum": "sum", "Count": "count"}})

Out[1]: 
      Amount      
         Sum Count
User              
user1   18.0     2
user2   20.5     3
user3   10.5     1

会产生以下警告:

FutureWarning:不建议将dict与重命名一起使用,并且将 在将来的版本中删除返回super(DataFrameGroupBy, self).aggregate(arg,* args,** kwargs)

如何避免这种情况?

trans by 2020-07-30T09:57:04Z

python-如何使用熊猫将增量数字添加到新列

我有这个简化的数据框:

ID   Fruit
F1   Apple
F2   Orange
F3   Banana 

我想在数据帧的开头添加一个新列df['New_ID'],该列的编号为880,每行加一。

输出应该像这样:

New_ID   ID   Fruit
880      F1   Apple
881      F2   Orange
882      F3   Banana  

我尝试了以下方法:

df['New_ID'] = ["880"] # but I want to do this without assigning it the list of numbers literally

知道如何解决这个问题吗?

谢谢!

trans by 2020-07-28T11:01:49Z

如何在一段时间内将DataFrame分组?

我从日志文件中获取了一些数据,想按分钟对条目进行分组:

 def gen(date, count=10):
     while count > 0:
         yield date, "event{}".format(randint(1,9)), "source{}".format(randint(1,3))
         count -= 1
         date += DateOffset(seconds=randint(40))

 df = DataFrame.from_records(list(gen(datetime(2012,1,1,12, 30))), index='Time', columns=['Time', 'Event', 'Source'])

df:

 Event  Source
 2012-01-01 12:30:00     event3  source1
 2012-01-01 12:30:12     event2  source2
 2012-01-01 12:30:12     event2  source2
 2012-01-01 12:30:29     event6  source1
 2012-01-01 12:30:38     event1  source1
 2012-01-01 12:31:05     event4  source2
 2012-01-01 12:31:38     event4  source1
 2012-01-01 12:31:44     event5  source1
 2012-01-01 12:31:48     event5  source2
 2012-01-01 12:32:23     event6  source1

我尝试了以下选项:

  1. groupby([TimeGrouper(freq='Min'), df.Source])级别太高,想要汇总。
  2. groupby([TimeGrouper(freq='Min'), df.Source])失败,发生异常。
  3. groupby([TimeGrouper(freq='Min'), df.Source])可以正常工作并返回DataFrameGroupBy对象以进行进一步处理,例如:

    groupby([TimeGrouper(freq='Min'), df.Source])

但是,没有记录groupby([TimeGrouper(freq='Min'), df.Source])类。

在一段时间内进行分组的正确方法是什么? 如何按分钟并按“源”列对数据进行分组,例如 groupby([TimeGrouper(freq='Min'), df.Source])

trans by 2020-07-27T12:44:02Z

python-Pandas Dataframe:将列拆分为多列,右对齐不一致的单元格条目

我有一个熊猫数据框,其中有一列名为“城市,州,国家”。 我想将此列分为三个新列,即“城市”,“州”和“国家”。

0                 HUN
1                 ESP
2                 GBR
3                 ESP
4                 FRA
5             ID, USA
6             GA, USA
7    Hoboken, NJ, USA
8             NJ, USA
9                 AUS

将列分为三列就足够了:

location_df = df['City, State, Country'].apply(lambda x: pd.Series(x.split(',')))

但是,这将创建左对齐数据:

     0       1       2
0    HUN     NaN     NaN
1    ESP     NaN     NaN
2    GBR     NaN     NaN
3    ESP     NaN     NaN
4    FRA     NaN     NaN
5    ID      USA     NaN
6    GA      USA     NaN
7    Hoboken  NJ     USA
8    NJ      USA     NaN
9    AUS     NaN     NaN

如何将数据右对齐来创建新列? 我是否需要遍历每一行,计算逗号的数量并分别处理内容?

trans by 2020-07-26T13:31:21Z

python-在新的多索引下串联熊猫列

给定一个数据帧字典,例如:

dict = {'ABC': df1, 'XYZ' : df2}   # of any length...

其中每个数据框具有相同的列和相似的索引,例如:

data           Open     High      Low    Close   Volume
Date                                                   
2002-01-17  0.18077  0.18800  0.16993  0.18439  1720833
2002-01-18  0.18439  0.21331  0.18077  0.19523  2027866
2002-01-21  0.19523  0.20970  0.19162  0.20608   771149

最简单的方法是将所有数据帧组合成一个,并具有如下所示的多索引:

symbol         ABC                                       XYZ
data           Open     High      Low    Close   Volume  Open ...
Date                                                   
2002-01-17  0.18077  0.18800  0.16993  0.18439  1720833  ...
2002-01-18  0.18439  0.21331  0.18077  0.19523  2027866  ...
2002-01-21  0.19523  0.20970  0.19162  0.20608   771149  ...

我尝试了几种方法-例如,对于每个数据框,用.from_product(['ABC', columns])之类的多索引替换列,然后沿axis=1进行串联,但没有成功。

trans by 2020-07-25T09:56:42Z

python-Pandas date_range在月初生成月度数据

我正在尝试生成每月数据的日期范围,其中一天总是在月初:

pd.date_range(start='1/1/1980', end='11/1/1991', freq='M')

这将生成1/31/19802/29/1980,依此类推。 相反,我只想要1/1/19802/1/1980,...

我已经看到另一个有关生成始终在一个月中特定日期的数据的问题,回答说不可能,但是肯定有可能在月初!

trans by 2020-07-25T02:54:32Z

python-matplotlib / pandas中是否有一个参数可以将直方图的Y轴表示为百分比?

我想比较两个直方图,方法是让Y轴显示整个数据集大小中每列的百分比,而不是绝对值。 那可能吗? 我正在使用Pandas和matplotlib。谢谢

trans by 2020-07-24T02:47:45Z

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