小编Tom*_*m M的帖子

如何将numpy数组作为对象存储在pandas数据框中?

我有一系列图像,存储在CVS文件中,每个图像一个字符串,该字符串是9216空格分隔整数的列表.我有一个函数将其转换为96x96 numpy数组.

我希望将这个numpy数组存储在我的数据帧的一列而不是字符串中.

但是,当我从列中检索项目时,它不再可用作numpy数组.

数据可以从这里下载,即training.cvs文件的最后一列.

https://www.kaggle.com/c/facial-keypoints-detection/data

import pandas as pd
import numpy as np

df_train = pandas.read_csv("training.csv")

def convert_to_np_arr(im_as_str):
    im = [int(i) for i in im_as_str.split()]
    im = np.asarray(im)
    im = im.reshape((96, 96))
    return im

df_train['Im_as_np'] = df_train.Image.apply(convert_to_np_arr)

im = df_train.Im_as_np[0]
plt.imshow(im, cmap = cm.Greys_r)
plt.show()
Run Code Online (Sandbox Code Playgroud)

如果不使用该函数并应用和存储图像,我直接使用代码它按预期工作

import pandas as pd
import numpy as np

df_train = pandas.read_csv("training.csv")

im = df_train.Image[0]
im = [int(i) for i in im.split()]
im = np.asarray(im)
im = im.reshape((96, 96))

plt.imshow(im, cmap = cm.Greys_r)
plt.show()
Run Code Online (Sandbox Code Playgroud)

python numpy pandas

5
推荐指数
1
解决办法
2805
查看次数

如何使 Pandas 数据框 hist() 的网格轴不可见?

这是我想要做的,数据帧所有列的直方图,但没有网格轴。下面的代码有效,但最好我想要一个更优雅的解决方案(例如将参数传递给 hist)

%matplotlib inline
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

X = np.asarray([50]*25+[30]*10)
X2 = np.asarray([90]*10+[20]*25)
X3 = np.asarray([10]*15+[70]*20)

df = pd.DataFrame(np.vstack([X, X2, X3]).T)


def plot_hists(df, nbins=10, figsize=(8, 8), disable_axis_labels = True):
    plt.close('all')
    grid_of_ax_hists = df.hist(bins=nbins, figsize=figsize)
    if disable_axis_labels:
        for row in grid_of_ax_hists:
            for ax in row:
                ax.xaxis.set_visible(False)
                ax.yaxis.set_visible(False)
    plt.show()

    df.hist()
    plt.subplots()

plot_hists(df, nbins=10, figsize=(8, 8), disable_axis_labels = True)
Run Code Online (Sandbox Code Playgroud)

python matplotlib pandas

0
推荐指数
1
解决办法
1460
查看次数

标签 统计

pandas ×2

python ×2

matplotlib ×1

numpy ×1