您知道如何将DataFrame的索引或列作为NumPy数组或python列表获取吗?
我有一个这样的df:
import pandas
a=[['1/2/2014', 'a', '6', 'z1'],
['1/2/2014', 'a', '3', 'z1'],
['1/3/2014', 'c', '1', 'x3'],
]
df = pandas.DataFrame.from_records(a[1:],columns=a[0])
Run Code Online (Sandbox Code Playgroud)
我想要展平df所以它是一个连续的列表,如下所示:
['1/2/2014', 'a', '6', 'z1', '1/2/2014', 'a', '3', 'z1','1/3/2014', 'c', '1', 'x3']
我可以循环遍历行和extend列表,但这是一种更简单的方法吗?
我有一个邻接矩阵存储为pandas.DataFrame:
node_names = ['A', 'B', 'C']
a = pd.DataFrame([[1,2,3],[3,1,1],[4,0,2]],
index=node_names, columns=node_names)
a_numpy = a.as_matrix()
Run Code Online (Sandbox Code Playgroud)
我想igraph.Graph从邻接矩阵pandas或numpy邻接矩阵创建一个.在理想的世界中,节点将按预期命名.
这可能吗?该教程似乎对此问题保持沉默.
假设我有一个如下所示的重组:
import numpy as np
# example data from @unutbu's answer
recs = [('Bill', '31', 260.0), ('Fred', 15, '145.0')]
r = np.rec.fromrecords(recs, formats = 'S30,i2,f4', names = 'name, age, weight')
print(r)
# [('Bill', 31, 260.0) ('Fred', 15, 145.0)]
Run Code Online (Sandbox Code Playgroud)
假设我想将某些列转换为浮点数.我该怎么做呢?我应该换成一个ndarray,然后再回到recarray吗?
有一个可以使用的scipy.signal.argrelextrema功能ndarray,但是当我尝试使用它时pandas.Series,它会返回一个错误.与熊猫一起使用它的正确方法是什么?
import numpy as np
import pandas as pd
from scipy.signal import argrelextrema
s = pd.Series(randn(10), range(10))
s
argrelextrema(s, np.greater)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-13-f3812e58bbe4> in <module>()
4 s = pd.Series(randn(10), range(10))
5 s
----> 6 argrelextrema(s, np.greater)
/usr/lib/python2.7/dist-packages/scipy/signal/_peak_finding.pyc in argrelextrema(data, comparator, axis, order, mode)
222 """
223 results = _boolrelextrema(data, comparator,
--> 224 axis, order, mode)
225 return np.where(results)
226
/usr/lib/python2.7/dist-packages/scipy/signal/_peak_finding.pyc in _boolrelextrema(data, comparator, axis, order, mode)
60
61 results …Run Code Online (Sandbox Code Playgroud) 我需要将大型数据帧转换为numpy数组.仅保留数值和类型.我知道有很好的记录方法可以这样做.
那么,哪一个更喜欢?
df.values
df._as_matrix()
pd.to_numeric(df)
... others ...
Run Code Online (Sandbox Code Playgroud)
决策因素:
效率
安全地操作nan,np.nans和其他可能的意外值
数值稳定
我有以下代码
train_X, test_X, train_y, test_y = train_test_split(X.as_matrix(), y.as_matrix(), test_size=0.25)
Run Code Online (Sandbox Code Playgroud)
这里X是一个DataFrame,y是一个序列。当调用上面的函数时,我得到以下警告:
/opt/conda/lib/python3.6/site-packages/ipykernel_launcher.py:1:FutureWarning:方法.as_matrix将在以后的版本中删除。请改用.values。
“”“启动IPython内核的入口点。
然后,我尝试.values按照警告中的说明进行更改:
train_X, test_X, train_y, test_y = train_test_split(X.values(), y.values(), test_size=0.25)
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
()中的TypeError追溯(最近一次通话最后一次)-> 1 train_X,test_X,train_y,test_y = train_test_split(X.values(),y.values(),test_size = 0.25)
TypeError:“ numpy.ndarray”对象不可调用
我该如何解决?
我有一个大小为 (140000,22) 维度的数据框。
我必须创建相同维度的二维数组才能将其传递到卷积神经网络中。
你能指导如何在这个数据帧上进行转换吗
import pandas as pd
Run Code Online (Sandbox Code Playgroud)
我有一个数据框:
df=pd.DataFrame({'cmplxnumbers':[1+1j,2-2j,3*(1+1j)]})
Run Code Online (Sandbox Code Playgroud)
我需要获取列中数字的虚部。
我这样做:
df.cmplxnumbers.apply(lambda number: number.imag)
Run Code Online (Sandbox Code Playgroud)
结果我得到:
0 1.0
1 -2.0
2 3.0
Name: cmplxnumbers, dtype: float64
Run Code Online (Sandbox Code Playgroud)
正如预期的那样。
有没有更快、更直接的方法,也许不涉及lambda函数?
我想将数据集类别的权重矩阵传递给神经网络。
from sklearn.utils import class_weight
class_weights = class_weight.compute_class_weight('balanced',
np.unique(y_train),
y_train)
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-93-9452aecf4030> in <module>
2 class_weights = class_weight.compute_class_weight('balanced',
3 np.unique(y_train),
----> 4 y_train)
~\AppData\Roaming\Python\Python36\site-packages\sklearn\utils\class_weight.py in compute_class_weight(class_weight, classes, y)
39
40 if set(y) - set(classes):
---> 41 raise ValueError("classes should include all valid labels that can "
42 "be in y")
43 if class_weight is None or len(class_weight) == 0:
ValueError: classes should include all valid labels that can be in y
Run Code Online (Sandbox Code Playgroud)
我不明白,这是我的y_train …
python ×10
pandas ×8
numpy ×4
dataframe ×2
scikit-learn ×2
convolution ×1
igraph ×1
list ×1
python-3.x ×1