欠損値のある Pandas DataFrame を NumPy 配列に効率的に変換するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-11-05 02:42:02
オリジナル
641 人が閲覧しました

How to efficiently convert a Pandas DataFrame with missing values into a NumPy array?

欠損値のある Pandas データフレームを NumPy 配列に変換

欠損値のある Pandas データフレームを NumPy に変換する最も効率的な方法配列は df.to_numpy() を介して取得されます。 df.values のような古いメソッドに比べて、次のようないくつかの利点があります。

  • 基になるデータのビューを一貫して返します。メモリ消費を最小限に抑えます。
  • 適切な NumPy dtype に変換することで拡張型を処理します
  • 特に指定がない限り、元のデータ型を保持します

例:

<code class="python">import pandas as pd
import numpy as np

# Create a DataFrame with missing values
df = pd.DataFrame({'A': [np.nan, np.nan, 0.1, 0.1, 0.1, 0.1],
                   'B': [0.2, np.nan, 0.2, 0.2, np.nan, np.nan],
                   'C': [np.nan, 0.5, 0.5, np.nan, 0.5, np.nan]})

# Convert to a NumPy array with missing values represented as `np.nan`
array = df.to_numpy()

# Result:
# array([[ nan,  0.2,  nan],
#        [ nan,  nan,  0.5],
#        [ 0.1,  0.2,  0.5],
#        [ 0.1,  0.2,  nan],
#        [ 0.1,  nan,  0.5],
#        [ 0.1,  nan,  nan]])</code>
ログイン後にコピー

Dtype の保持:

to_numpy は Dtype の直接保持をサポートしていませんが、np.rec.fromrecords を使用してこの効果を実現できます。

<code class="python"># Create a DataFrame with mixed data types
df = pd.DataFrame({'A': [1, 2, 3],
                   'B': [4, 5, 6],
                   'C': [7.2, 8.1, 9.3]})

# Convert to a structured array with preserved Dtypes
struct_array = np.rec.fromrecords(
    df.reset_index(),
    names=list(df.columns) + ['index']
)

# Result:
# rec.array([('a', 1, 4, 7.2), ('b', 2, 5, 8.1), ('c', 3, 6, 9.3)],
#           dtype=[('index', '<U1'), ('A', '<i8'), ('B', '<i8'), ('C', '<f8')])</code>
ログイン後にコピー

以上が欠損値のある Pandas DataFrame を NumPy 配列に効率的に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!