我有一个 dfAB
import pandas as pd
import random
A = [ random.randint(0,100) for i in range(10) ]
B = [ random.randint(0,100) for i in range(10) ]
dfAB = pd.DataFrame({ 'A': A, 'B': B })
dfAB
Run Code Online (Sandbox Code Playgroud)
我们可以采用分位数函数,因为我想知道列的第 75 个百分位数:
dfAB.quantile(0.75)
Run Code Online (Sandbox Code Playgroud)
但是现在说我在 dfAB 中放入了一些 NaN 并重新执行该函数,显然它是不同的:
dfAB.loc[5:8]=np.nan
dfAB.quantile(0.75)
Run Code Online (Sandbox Code Playgroud)
基本上,当我计算dfAB的平均值时,我通过skipna忽略Na,因为我不希望它们影响我的统计数据(我的代码中有很多,故意的,obv使它们为零没有帮助)
dfAB.mean(skipna=True)
Run Code Online (Sandbox Code Playgroud)
因此,我得到的是分位数函数是否/如何解决 NaN?
在回答这个问题时,我发现在使用melt
pandas数据帧之后,以前是有序分类dtype的列变为了object
.这是预期的行为吗?
注意:不寻找解决方案,只是想知道这种行为是否有任何原因,或者它是否不是预期的行为.
例:
使用以下数据框df
:
Cat L_1 L_2 L_3
0 A 1 2 3
1 B 4 5 6
2 C 7 8 9
df['Cat'] = pd.Categorical(df['Cat'], categories = ['C','A','B'], ordered=True)
# As you can see `Cat` is a category
>>> df.dtypes
Cat category
L_1 int64
L_2 int64
L_3 int64
dtype: object
melted = df.melt('Cat')
>>> melted
Cat variable value
0 A L_1 1
1 B L_1 4
2 C L_1 7
3 …
Run Code Online (Sandbox Code Playgroud) 我在emacs中使用flake8来清理我的python代码。我的评论被标记为错误(E501 line too long (x > 79 characters)
),这很烦人。我想知道是否有人知道请flake8忽略单行和多行注释,但是当我的非注释行太长时仍让我知道吗?
提前致谢!
这个功能如何运作?
import numpy as np
first_names = (5,5,5)
last_names = (3,1,2)
x = np.lexsort((first_names, last_names))
print(x)
Run Code Online (Sandbox Code Playgroud)
它给出输出 [1 2 0] 。我假设这两个列表是按变量last_names 排序的。如果是这样,数字2怎么会有索引0。2在1和3之间,所以我不明白这种排序是如何工作的。请解释。
我有一个像
result = np.array([[[289, 354, 331],
[291, 206, 66],
[242, 70, 256]],
[[210, 389, 342],
[273, 454, 218],
[255, 87, 256]],
[[127, 342, 173],
[450, 395, 147],
[223, 228, 401]]])
Run Code Online (Sandbox Code Playgroud)
如果一个元素大于 255,我试图屏蔽数组。即我假设它的范围是 0-1024 并将我的值除以 4
result = np.putmask(result, result > 255, result/4)
Run Code Online (Sandbox Code Playgroud)
注意:结果是之前的 3D 数组。我收到此错误
TypeError: Cannot cast array data from dtype('float64') to dtype('int32') according to the rule 'safe'
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?提前致谢
我有这个房地产数据:
neighborhood type_property type_negotiation price
Smallville house rent 2000
Oakville apartment for sale 100000
King Bay house for sale 250000
...
Run Code Online (Sandbox Code Playgroud)
我创建了一个函数,通过您输入的邻域对这个大数据集进行排序,如果它是一个待售房屋,然后返回这些房屋的第10和第90百分位数和数量.我在下面有这个:
def foo(string):
a = df[(df.type_negotiation == 'forsale')&(df.type_property == 'house')&(df.neighborhood == string)]
b = pd.DataFrame([[a.price.quantile(0.1), a.price.quantile(0.9), len(a.index)]],
columns=('tenthpercentile', 'ninetiethpercentile', 'Quantity'))
return b
print(foo('KingBay'))
tenthpercentile ninetiethpercentile Quantity
0 250000.0 250000.0 1
Run Code Online (Sandbox Code Playgroud)
我想编写一个循环来为我所拥有的邻域列表执行此操作,然后在一个帧中编译新数据中的每个返回.看起来像这样:
tenthpercentile ninetiethpercentile Quantity
King Bay 250000.0 250000.0 1
Smallville 99000.0 120000.0 8
Oakville 45000.0 160000.0 6
Run Code Online (Sandbox Code Playgroud)
先感谢您.
在 Python 中,为了按组获取摘要,我使用groupby().agg(fx())
; 例如groupby('variable').agg('sum')
。这和直接使用该函数有什么区别,例如;groupby('variable').sum()
?
我正在尝试通过在我的数据框中添加两个现有列来创建一个新列。
原始数据框
???????????????
? cola ? colb ?
???????????????
? 1 ? 1 ?
? null ? 3 ?
? 2 ? null ?
? 4 ? 2 ?
???????????????
Run Code Online (Sandbox Code Playgroud)
派生列的预期输出
??????????????????????
? cola ? colb ? colc ?
??????????????????????
? 1 ? 1 ? 2 ?
? null ? 3 ? 3 ?
? 2 ? null ? 2 ?
? 4 ? 2 ? 6 ?
??????????????????????
Run Code Online (Sandbox Code Playgroud)
当我使用 df = df.withColumn('colc',df.cola+df.colb) 时,它不会添加具有空值的列。
我得到的输出是:
??????????????????????
? cola ? colb …
Run Code Online (Sandbox Code Playgroud) 我正在使用 python 3.7,我想获取矩阵的所有奇数列。
举个例子,我现在有一个这种风格的 4x4 矩阵。
[[0, 9, 1, 6], [0, 3, 1, 5], [0, 2, 1, 7], [0, 6, 1, 2]]
Run Code Online (Sandbox Code Playgroud)
那是...
0 9 1 6
0 3 1 5
0 2 1 7
0 6 1 2
Run Code Online (Sandbox Code Playgroud)
我想得到:
9 6
3 5
2 7
6 2
Run Code Online (Sandbox Code Playgroud)
矩阵的数量和大小会发生变化,但结构将始终不变
[[0, (int), 1, (int), 2...], [0, (int), 1, (int), 2 ...], [0, (int), 1, (int), 2...], [0, (int), 1, (int), 2...], ...]
Run Code Online (Sandbox Code Playgroud)
要获得我可以做的行[:: 2]
,但是这个绝妙的解决方案现在对我不起作用。我尝试使用以下方法访问矩阵:
for i in matrix:
for …
Run Code Online (Sandbox Code Playgroud) 我有一个元素数组x=[9,2,2,2,2,3,4,4,55,55,6,2,2,2,7,0,0]
,我想知道一个值在这个数组中连续显示多少次,使用python语言.预期结果应该是:a=[1,4,1,2,2,1,3,1,2]
以下代码显示了x中的重复数字
x=[9,2,2,2,2,3,4,4,55,55,6,2,2,2,7,0,0]
def times_so_far(ls):
out = [0]*len(ls)
for i in range(len(ls)):
out[i] = ls[:i].count(ls[i])
return out
print(times_so_far(x))
Run Code Online (Sandbox Code Playgroud) python ×10
pandas ×4
list ×2
numpy ×2
apache-spark ×1
dataframe ×1
duplicates ×1
flake8 ×1
function ×1
loops ×1
pep8 ×1
pyspark ×1
python-3.x ×1
quantile ×1