簡體   English   中英

如何從numpy數組創建數據框?

[英]How to create a dataframe from numpy arrays?

我正在嘗試創建一個矩陣/ DataFrame,其中數字存儲在2個變量中

x = np.linspace(0,50)
y = np.exp(x)

我希望他們看起來像這樣:

x    |     y
___________________
0    |     1.0...
1    |     2.77...             
2    |     7.6...                      
...  |     ...             
50   |     5.18e+21...    

我希望它在一個DataFrame所以我可以使用pandas庫。

提前致謝

import pandas as pd

df = pd.DataFrame({'x':x, 'y':y})

將字典中的鍵更改為所需的列名稱。

您可以執行以下操作。

import pandas as pd
import numpy as np

df = pd.DataFrame()
df['x'] = np.linspace(0,50)
df['y'] = np.exp(df['x'])

有了pandas

你可以發行

>>> xs = np.arange(51)                                                                                                 
>>> ys = np.exp(xs) 

獲取x和y值,然后使用。來構建數據框

>>> df = pd.DataFrame({'x': xs, 'y': ys})
>>> df                                                                                                                 
     x             y
0    0  1.000000e+00
1    1  2.718282e+00
2    2  7.389056e+00
3    3  2.008554e+01
...

在這種情況下,您還可以使用x值作為系列的索引而不會丟失任何信息。

>>> index = pd.RangeIndex(0, 51, name='x')                                                                             
>>> exps = pd.Series(data=np.exp(index), index=index, name='y')                                                        
>>> exps                                                                                                               
x
0     1.000000e+00
1     2.718282e+00
2     7.389056e+00
3     2.008554e+01
...
Name: y, dtype: float64

沒有pandas

考慮一下您是否真的需要數據幀或系列。 你可以把它留在

>>> xs = np.arange(51)                                                                                                 
>>> ys = np.exp(xs)

然后索引ys與整數012 ,...得到的值exp(0) exp(1) exp(2) ,...

只是:

碼:

import pandas as pd
import numpy as np

x = np.linspace(0,50)
y = np.exp(x)

df = pd.DataFrame({'x': x, 'y': y})

只需創建一個元組列表並將其傳遞給DataFrame構造函數:

df = pd.DataFrame([(i, np.exp(i)) for i in np.linspace(0,50)], columns=['x', 'y'])

產量

x        y
0  1.000000e+00
1  2.718282e+00
2  7.389056e+00
...

在平均時間內分配列名稱和設置列:

import pandas as pd
df = pd.DataFrame({"x" : x , "y" : y})

在此輸入圖像描述

你要找的是[np.concatenate][1]

因此,對於您的示例,代碼將是

import numpy as np
x = np.linspace(0,50)
y = np.exp(x)
z = np.concatenate((x.reshape(1,-1),y.reshape(1,-1))).T
print(z.shape)
# (2,50)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM