Bandingkan dua variabel kategori python

Uji Chi-Square digunakan untuk membandingkan distribusi dua variabel kategori dari sampel yang sama atau dari sampel yang berbeda. Tes dilakukan dengan menggunakan jumlah pengamatan yang mutlak, bukan persentase pengamatan

Ini adalah pengantar tipe data kategori panda, termasuk perbandingan singkat dengan R

In [21]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}]

In [22]: df_cat = df.astype["category"]

In [23]: df_cat.dtypes
Out[23]: 
A    category
B    category
dtype: object
3

In [21]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}]

In [22]: df_cat = df.astype["category"]

In [23]: df_cat.dtypes
Out[23]: 
A    category
B    category
dtype: object
4 adalah tipe data panda yang sesuai dengan variabel kategori dalam statistik. Sebuah variabel kategori mengambil jumlah nilai yang mungkin terbatas, dan biasanya tetap, [
In [21]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}]

In [22]: df_cat = df.astype["category"]

In [23]: df_cat.dtypes
Out[23]: 
A    category
B    category
dtype: object
5;
In [21]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}]

In [22]: df_cat = df.astype["category"]

In [23]: df_cat.dtypes
Out[23]: 
A    category
B    category
dtype: object
6 dalam R]. Contohnya adalah jenis kelamin, kelas sosial, golongan darah, afiliasi negara, waktu pengamatan atau penilaian melalui skala Likert

Berbeda dengan variabel kategori statistik, data kategori mungkin memiliki urutan [mis. g. 'sangat setuju' vs 'setuju' atau 'pengamatan pertama' vs. 'pengamatan kedua'], tetapi operasi numerik [penambahan, pembagian, ...] tidak dimungkinkan

Semua nilai data kategorikal ada di

In [21]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}]

In [22]: df_cat = df.astype["category"]

In [23]: df_cat.dtypes
Out[23]: 
A    category
B    category
dtype: object
5 atau
In [21]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}]

In [22]: df_cat = df.astype["category"]

In [23]: df_cat.dtypes
Out[23]: 
A    category
B    category
dtype: object
8. Urutan ditentukan oleh urutan
In [21]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}]

In [22]: df_cat = df.astype["category"]

In [23]: df_cat.dtypes
Out[23]: 
A    category
B    category
dtype: object
5, bukan urutan leksikal dari nilai-nilai. Secara internal, struktur data terdiri dari array
In [21]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}]

In [22]: df_cat = df.astype["category"]

In [23]: df_cat.dtypes
Out[23]: 
A    category
B    category
dtype: object
5 dan array integer
In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
1 yang menunjuk ke nilai sebenarnya dalam array
In [21]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}]

In [22]: df_cat = df.astype["category"]

In [23]: df_cat.dtypes
Out[23]: 
A    category
B    category
dtype: object
5

Tipe data kategori berguna dalam kasus berikut

  • Sebuah variabel string yang hanya terdiri dari beberapa nilai yang berbeda. Mengubah variabel string seperti itu menjadi variabel kategorikal akan menghemat sebagian memori, lihat

  • Urutan leksikal suatu variabel tidak sama dengan urutan logis ["satu", "dua", "tiga"]. Dengan mengonversi ke kategorikal dan menentukan urutan pada kategori, pengurutan dan min/maks akan menggunakan urutan logis alih-alih urutan leksikal, lihat

  • Sebagai sinyal ke pustaka Python lain bahwa kolom ini harus diperlakukan sebagai variabel kategori [mis. g. untuk menggunakan metode statistik atau tipe plot yang sesuai]

Lihat juga

Pembuatan objek

Pembuatan seri

Kategori

In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
3 atau kolom dalam
In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
4 dapat dibuat dengan beberapa cara

Dengan menentukan

In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
_5 saat membuat
In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
3

In [1]: s = pd.Series[["a", "b", "c", "a"], dtype="category"]

In [2]: s
Out[2]: 
0    a
1    b
2    c
3    a
dtype: category
Categories [3, object]: ['a', 'b', 'c']

Dengan mengonversi

In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
_3 atau kolom yang ada menjadi tipe
In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
8

In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a

Dengan menggunakan fungsi khusus, seperti , yang mengelompokkan data ke dalam bin diskrit. Lihat di dokumen

In [6]: df = pd.DataFrame[{"value": np.random.randint[0, 100, 20]}]

In [7]: labels = ["{0} - {1}".format[i, i + 9] for i in range[0, 100, 10]]

In [8]: df["group"] = pd.cut[df.value, range[0, 105, 10], right=False, labels=labels]

In [9]: df.head[10]
Out[9]: 
   value    group
0     65  60 - 69
1     49  40 - 49
2     56  50 - 59
3     43  40 - 49
4     43  40 - 49
5     91  90 - 99
6     32  30 - 39
7     87  80 - 89
8     36  30 - 39
9      8    0 - 9

Dengan meneruskan objek ke

In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
_3 atau menugaskannya ke
In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
4

In [10]: raw_cat = pd.Categorical[
   ....:     ["a", "b", "c", "a"], categories=["b", "c", "d"], ordered=False
   ....: ]
   ....: 

In [11]: s = pd.Series[raw_cat]

In [12]: s
Out[12]: 
0    NaN
1      b
2      c
3    NaN
dtype: category
Categories [3, object]: ['b', 'c', 'd']

In [13]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [14]: df["B"] = raw_cat

In [15]: df
Out[15]: 
   A    B
0  a  NaN
1  b    b
2  c    c
3  a  NaN

Data kategori memiliki

In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
8 spesifik

In [16]: df.dtypes
Out[16]: 
A      object
B    category
dtype: object

pembuatan DataFrame

Mirip dengan bagian sebelumnya di mana satu kolom diubah menjadi kategorikal, semua kolom dalam

In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
4 dapat dikonversi menjadi kategorikal baik selama atau setelah konstruksi

Ini dapat dilakukan selama konstruksi dengan menentukan

In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
5 di
In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
4 konstruktor

In [17]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}, dtype="category"]

In [18]: df.dtypes
Out[18]: 
A    category
B    category
dtype: object

Perhatikan bahwa kategori yang ada di setiap kolom berbeda;

In [19]: df["A"]
Out[19]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [20]: df["B"]
Out[20]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']

Secara analog, semua kolom dalam

In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
4 yang ada dapat dikonversi secara batch menggunakan

In [21]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}]

In [22]: df_cat = df.astype["category"]

In [23]: df_cat.dtypes
Out[23]: 
A    category
B    category
dtype: object

Konversi ini juga dilakukan kolom demi kolom

In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
_

Mengontrol perilaku

Dalam contoh di atas di mana kami melewati

In [26]: from pandas.api.types import CategoricalDtype

In [27]: s = pd.Series[["a", "b", "c", "a"]]

In [28]: cat_type = CategoricalDtype[categories=["b", "c", "d"], ordered=True]

In [29]: s_cat = s.astype[cat_type]

In [30]: s_cat
Out[30]: 
0    NaN
1      b
2      c
3    NaN
dtype: category
Categories [3, object]: ['b' < 'c' < 'd']
_9, kami menggunakan perilaku default

  1. Kategori disimpulkan dari data

  2. Kategori tidak diurutkan

Untuk mengontrol perilaku tersebut, alih-alih meneruskan

In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
00, gunakan instance
In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
01

In [26]: from pandas.api.types import CategoricalDtype

In [27]: s = pd.Series[["a", "b", "c", "a"]]

In [28]: cat_type = CategoricalDtype[categories=["b", "c", "d"], ordered=True]

In [29]: s_cat = s.astype[cat_type]

In [30]: s_cat
Out[30]: 
0    NaN
1      b
2      c
3    NaN
dtype: category
Categories [3, object]: ['b' < 'c' < 'd']

Demikian pula,

In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
_01 dapat digunakan dengan
In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
4 untuk memastikan bahwa kategori konsisten di antara semua kolom

In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
0

Catatan

Untuk melakukan konversi berdasarkan tabel, di mana semua label di seluruh

In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
4 digunakan sebagai kategori untuk setiap kolom, parameter
In [21]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}]

In [22]: df_cat = df.astype["category"]

In [23]: df_cat.dtypes
Out[23]: 
A    category
B    category
dtype: object
5 dapat ditentukan secara terprogram dengan
In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
06

Jika Anda sudah memiliki

In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
1 dan
In [21]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}]

In [22]: df_cat = df.astype["category"]

In [23]: df_cat.dtypes
Out[23]: 
A    category
B    category
dtype: object
5, Anda dapat menggunakan konstruktor untuk menyimpan langkah pemfaktoran selama mode konstruktor normal

In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
1

Mendapatkan kembali data asli

Untuk kembali ke larik

In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
_3 atau NumPy asli, gunakan
In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
11 atau
In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
12

In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
2

Catatan

Berbeda dengan fungsi

In [21]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}]

In [22]: df_cat = df.astype["category"]

In [23]: df_cat.dtypes
Out[23]: 
A    category
B    category
dtype: object
3 R, data kategorikal tidak mengubah nilai input menjadi string;

Catatan

Berbeda dengan fungsi

In [21]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}]

In [22]: df_cat = df.astype["category"]

In [23]: df_cat.dtypes
Out[23]: 
A    category
B    category
dtype: object
_3 R, saat ini tidak ada cara untuk menetapkan/mengubah label pada waktu pembuatan. Gunakan
In [21]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}]

In [22]: df_cat = df.astype["category"]

In [23]: df_cat.dtypes
Out[23]: 
A    category
B    category
dtype: object
_5 untuk mengubah kategori setelah waktu pembuatan

TipeD Kategorikal

Jenis kategori sepenuhnya dijelaskan oleh

  1. In [21]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}]
    
    In [22]: df_cat = df.astype["category"]
    
    In [23]: df_cat.dtypes
    Out[23]: 
    A    category
    B    category
    dtype: object
    
    5. urutan nilai unik dan tidak ada nilai yang hilang

  2. In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]
    
    In [4]: df["B"] = df["A"].astype["category"]
    
    In [5]: df
    Out[5]: 
       A  B
    0  a  a
    1  b  b
    2  c  c
    3  a  a
    
    _17. boolean

Informasi ini dapat disimpan dalam

In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
_01. Argumen
In [21]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}]

In [22]: df_cat = df.astype["category"]

In [23]: df_cat.dtypes
Out[23]: 
A    category
B    category
dtype: object
5 adalah opsional, yang menyiratkan bahwa kategori aktual harus disimpulkan dari apa pun yang ada dalam data saat dibuat. Kategori diasumsikan tidak terurut secara default

In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
3

A

In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
_01 dapat digunakan di mana saja panda mengharapkan
In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
22. Misalnya , , atau dalam konstruktor
In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
3

Catatan

Demi kenyamanan, Anda dapat menggunakan string

In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
00 sebagai ganti
In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
01 saat Anda menginginkan perilaku default dari kategori tidak diurutkan, dan sama dengan nilai yang ditetapkan yang ada dalam larik. Dengan kata lain,
In [26]: from pandas.api.types import CategoricalDtype

In [27]: s = pd.Series[["a", "b", "c", "a"]]

In [28]: cat_type = CategoricalDtype[categories=["b", "c", "d"], ordered=True]

In [29]: s_cat = s.astype[cat_type]

In [30]: s_cat
Out[30]: 
0    NaN
1      b
2      c
3    NaN
dtype: category
Categories [3, object]: ['b' < 'c' < 'd']
_9 setara dengan
In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
29

semantik kesetaraan

Dua contoh

In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
_01 membandingkan sama setiap kali mereka memiliki kategori dan urutan yang sama. Saat membandingkan dua kategori tak terurut, urutan
In [21]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}]

In [22]: df_cat = df.astype["category"]

In [23]: df_cat.dtypes
Out[23]: 
A    category
B    category
dtype: object
5 tidak dipertimbangkan

In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
_4

Semua contoh

In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
_01 bandingkan sama dengan string
In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
00

In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
5

Peringatan

Karena

In [26]: from pandas.api.types import CategoricalDtype

In [27]: s = pd.Series[["a", "b", "c", "a"]]

In [28]: cat_type = CategoricalDtype[categories=["b", "c", "d"], ordered=True]

In [29]: s_cat = s.astype[cat_type]

In [30]: s_cat
Out[30]: 
0    NaN
1      b
2      c
3    NaN
dtype: category
Categories [3, object]: ['b' < 'c' < 'd']
_9 pada dasarnya adalah
In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
35, dan karena semua contoh
In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
01 dibandingkan sama dengan
In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
00, semua contoh
In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
01 dibandingkan sama dengan
In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
35, terlepas dari
In [21]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}]

In [22]: df_cat = df.astype["category"]

In [23]: df_cat.dtypes
Out[23]: 
A    category
B    category
dtype: object
5 atau ________17______17

Keterangan

Menggunakan data kategorikal akan menghasilkan output yang mirip dengan

In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
3 atau
In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
4 dari tipe
In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
45

In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
6

Bekerja dengan kategori

Data kategorikal memiliki properti

In [21]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}]

In [22]: df_cat = df.astype["category"]

In [23]: df_cat.dtypes
Out[23]: 
A    category
B    category
dtype: object
5 dan
In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
17, yang mencantumkan kemungkinan nilainya dan apakah urutannya penting atau tidak. Properti ini diekspos sebagai
In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
48 dan
In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
49. Jika Anda tidak menentukan kategori dan pengurutan secara manual, mereka disimpulkan dari argumen yang diteruskan

In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
7

Dimungkinkan juga untuk meneruskan kategori dalam urutan tertentu

In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
8

Catatan

Data kategorikal baru tidak diurutkan secara otomatis. Anda harus secara eksplisit memberikan

In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
_50 untuk menunjukkan urutan
In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
51

Catatan

Hasil dari tidak selalu sama dengan

In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
53, karena
In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
54 memiliki beberapa jaminan, yaitu mengembalikan kategori dalam urutan tampilan, dan hanya menyertakan nilai yang benar-benar ada

In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
_9

Mengganti nama kategori

Mengganti nama kategori dilakukan dengan menggunakan metode

In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
55

In [6]: df = pd.DataFrame[{"value": np.random.randint[0, 100, 20]}]

In [7]: labels = ["{0} - {1}".format[i, i + 9] for i in range[0, 100, 10]]

In [8]: df["group"] = pd.cut[df.value, range[0, 105, 10], right=False, labels=labels]

In [9]: df.head[10]
Out[9]: 
   value    group
0     65  60 - 69
1     49  40 - 49
2     56  50 - 59
3     43  40 - 49
4     43  40 - 49
5     91  90 - 99
6     32  30 - 39
7     87  80 - 89
8     36  30 - 39
9      8    0 - 9
_0

Catatan

Berbeda dengan

In [21]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}]

In [22]: df_cat = df.astype["category"]

In [23]: df_cat.dtypes
Out[23]: 
A    category
B    category
dtype: object
3 R, data kategorikal dapat memiliki kategori jenis lain selain string

Catatan

Ketahuilah bahwa menetapkan kategori baru adalah operasi di tempat, sementara sebagian besar operasi lain di bawah

In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
57 per default mengembalikan
In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
3 baru dari dtype
In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
8

Kategori harus unik atau

In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
_60 dimunculkan

In [6]: df = pd.DataFrame[{"value": np.random.randint[0, 100, 20]}]

In [7]: labels = ["{0} - {1}".format[i, i + 9] for i in range[0, 100, 10]]

In [8]: df["group"] = pd.cut[df.value, range[0, 105, 10], right=False, labels=labels]

In [9]: df.head[10]
Out[9]: 
   value    group
0     65  60 - 69
1     49  40 - 49
2     56  50 - 59
3     43  40 - 49
4     43  40 - 49
5     91  90 - 99
6     32  30 - 39
7     87  80 - 89
8     36  30 - 39
9      8    0 - 9
_1

Kategori juga tidak boleh

In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
_61 atau
In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
60 dinaikkan

In [6]: df = pd.DataFrame[{"value": np.random.randint[0, 100, 20]}]

In [7]: labels = ["{0} - {1}".format[i, i + 9] for i in range[0, 100, 10]]

In [8]: df["group"] = pd.cut[df.value, range[0, 105, 10], right=False, labels=labels]

In [9]: df.head[10]
Out[9]: 
   value    group
0     65  60 - 69
1     49  40 - 49
2     56  50 - 59
3     43  40 - 49
4     43  40 - 49
5     91  90 - 99
6     32  30 - 39
7     87  80 - 89
8     36  30 - 39
9      8    0 - 9
_2

Menambahkan kategori baru

Menambahkan kategori dapat dilakukan dengan menggunakan metode

In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
63

In [6]: df = pd.DataFrame[{"value": np.random.randint[0, 100, 20]}]

In [7]: labels = ["{0} - {1}".format[i, i + 9] for i in range[0, 100, 10]]

In [8]: df["group"] = pd.cut[df.value, range[0, 105, 10], right=False, labels=labels]

In [9]: df.head[10]
Out[9]: 
   value    group
0     65  60 - 69
1     49  40 - 49
2     56  50 - 59
3     43  40 - 49
4     43  40 - 49
5     91  90 - 99
6     32  30 - 39
7     87  80 - 89
8     36  30 - 39
9      8    0 - 9
_3

Menghapus kategori

Menghapus kategori dapat dilakukan dengan menggunakan metode

In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
64. Nilai yang dihapus diganti dengan
In [21]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}]

In [22]: df_cat = df.astype["category"]

In [23]: df_cat.dtypes
Out[23]: 
A    category
B    category
dtype: object
8

In [6]: df = pd.DataFrame[{"value": np.random.randint[0, 100, 20]}]

In [7]: labels = ["{0} - {1}".format[i, i + 9] for i in range[0, 100, 10]]

In [8]: df["group"] = pd.cut[df.value, range[0, 105, 10], right=False, labels=labels]

In [9]: df.head[10]
Out[9]: 
   value    group
0     65  60 - 69
1     49  40 - 49
2     56  50 - 59
3     43  40 - 49
4     43  40 - 49
5     91  90 - 99
6     32  30 - 39
7     87  80 - 89
8     36  30 - 39
9      8    0 - 9
_4

Menghapus kategori yang tidak digunakan

Menghapus kategori yang tidak terpakai juga bisa dilakukan

In [6]: df = pd.DataFrame[{"value": np.random.randint[0, 100, 20]}]

In [7]: labels = ["{0} - {1}".format[i, i + 9] for i in range[0, 100, 10]]

In [8]: df["group"] = pd.cut[df.value, range[0, 105, 10], right=False, labels=labels]

In [9]: df.head[10]
Out[9]: 
   value    group
0     65  60 - 69
1     49  40 - 49
2     56  50 - 59
3     43  40 - 49
4     43  40 - 49
5     91  90 - 99
6     32  30 - 39
7     87  80 - 89
8     36  30 - 39
9      8    0 - 9
_5

Menetapkan kategori

Jika Anda ingin menghapus dan menambahkan kategori baru dalam satu langkah [yang memiliki keunggulan kecepatan tertentu], atau cukup menyetel kategori ke skala yang telah ditentukan sebelumnya, gunakan

In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
66

In [6]: df = pd.DataFrame[{"value": np.random.randint[0, 100, 20]}]

In [7]: labels = ["{0} - {1}".format[i, i + 9] for i in range[0, 100, 10]]

In [8]: df["group"] = pd.cut[df.value, range[0, 105, 10], right=False, labels=labels]

In [9]: df.head[10]
Out[9]: 
   value    group
0     65  60 - 69
1     49  40 - 49
2     56  50 - 59
3     43  40 - 49
4     43  40 - 49
5     91  90 - 99
6     32  30 - 39
7     87  80 - 89
8     36  30 - 39
9      8    0 - 9
_6

Catatan

Ketahuilah bahwa

In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
_67 tidak dapat mengetahui apakah beberapa kategori dihilangkan dengan sengaja atau karena salah eja atau [di bawah Python3] karena perbedaan jenis [e. g. , NumPy S1 dtype dan string Python]. Ini dapat menghasilkan perilaku yang mengejutkan

Menyortir dan memesan

Jika data kategori diurutkan [

In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
68], maka urutan kategori memiliki arti dan operasi tertentu dimungkinkan. Jika kategori tidak terurut,
In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
69 akan menaikkan
In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
70

In [6]: df = pd.DataFrame[{"value": np.random.randint[0, 100, 20]}]

In [7]: labels = ["{0} - {1}".format[i, i + 9] for i in range[0, 100, 10]]

In [8]: df["group"] = pd.cut[df.value, range[0, 105, 10], right=False, labels=labels]

In [9]: df.head[10]
Out[9]: 
   value    group
0     65  60 - 69
1     49  40 - 49
2     56  50 - 59
3     43  40 - 49
4     43  40 - 49
5     91  90 - 99
6     32  30 - 39
7     87  80 - 89
8     36  30 - 39
9      8    0 - 9
_7

Anda dapat mengatur data kategori untuk diurutkan dengan menggunakan

In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
71 atau tidak diurutkan dengan menggunakan
In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
72. Ini secara default akan mengembalikan objek baru

In [6]: df = pd.DataFrame[{"value": np.random.randint[0, 100, 20]}]

In [7]: labels = ["{0} - {1}".format[i, i + 9] for i in range[0, 100, 10]]

In [8]: df["group"] = pd.cut[df.value, range[0, 105, 10], right=False, labels=labels]

In [9]: df.head[10]
Out[9]: 
   value    group
0     65  60 - 69
1     49  40 - 49
2     56  50 - 59
3     43  40 - 49
4     43  40 - 49
5     91  90 - 99
6     32  30 - 39
7     87  80 - 89
8     36  30 - 39
9      8    0 - 9
_8

Penyortiran akan menggunakan urutan yang ditentukan oleh kategori, bukan urutan leksikal yang ada pada tipe data. Ini bahkan berlaku untuk string dan data numerik

In [6]: df = pd.DataFrame[{"value": np.random.randint[0, 100, 20]}]

In [7]: labels = ["{0} - {1}".format[i, i + 9] for i in range[0, 100, 10]]

In [8]: df["group"] = pd.cut[df.value, range[0, 105, 10], right=False, labels=labels]

In [9]: df.head[10]
Out[9]: 
   value    group
0     65  60 - 69
1     49  40 - 49
2     56  50 - 59
3     43  40 - 49
4     43  40 - 49
5     91  90 - 99
6     32  30 - 39
7     87  80 - 89
8     36  30 - 39
9      8    0 - 9
_9

Menyusun ulang

Penyusunan ulang kategori dimungkinkan melalui metode

In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
73 dan
In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
67. Untuk
In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
_73, semua kategori lama harus dimasukkan ke dalam kategori baru dan kategori baru tidak diperbolehkan. Ini tentu akan membuat urutan sortir sama dengan urutan kategori

In [10]: raw_cat = pd.Categorical[
   ....:     ["a", "b", "c", "a"], categories=["b", "c", "d"], ordered=False
   ....: ]
   ....: 

In [11]: s = pd.Series[raw_cat]

In [12]: s
Out[12]: 
0    NaN
1      b
2      c
3    NaN
dtype: category
Categories [3, object]: ['b', 'c', 'd']

In [13]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [14]: df["B"] = raw_cat

In [15]: df
Out[15]: 
   A    B
0  a  NaN
1  b    b
2  c    c
3  a  NaN
0

Catatan

Perhatikan perbedaan antara menetapkan kategori baru dan menyusun ulang kategori. yang pertama mengganti nama kategori dan karenanya nilai individual di

In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
3, tetapi jika posisi pertama diurutkan terakhir, nilai yang diubah namanya akan tetap diurutkan terakhir. Pengurutan ulang berarti bahwa cara mengurutkan nilai berbeda setelahnya, tetapi nilai individual dalam
In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
3 tidak berubah

Catatan

Jika

In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
_51 tidak dipesan, dan akan menaikkan
In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
70. Operasi numerik seperti
In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
82,
In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
83,
In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
84,
In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
85 dan operasi berdasarkan mereka [e. g. , yang perlu menghitung rata-rata antara dua nilai jika panjang array genap] tidak berfungsi dan menaikkan
In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
70

Penyortiran multi kolom

Kolom dtyped kategorikal akan berpartisipasi dalam pengurutan multi-kolom dengan cara yang mirip dengan kolom lainnya. Urutan kategori ditentukan oleh

In [21]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}]

In [22]: df_cat = df.astype["category"]

In [23]: df_cat.dtypes
Out[23]: 
A    category
B    category
dtype: object
5 kolom itu

In [10]: raw_cat = pd.Categorical[
   ....:     ["a", "b", "c", "a"], categories=["b", "c", "d"], ordered=False
   ....: ]
   ....: 

In [11]: s = pd.Series[raw_cat]

In [12]: s
Out[12]: 
0    NaN
1      b
2      c
3    NaN
dtype: category
Categories [3, object]: ['b', 'c', 'd']

In [13]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [14]: df["B"] = raw_cat

In [15]: df
Out[15]: 
   A    B
0  a  NaN
1  b    b
2  c    c
3  a  NaN
1

Menyusun ulang

In [21]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}]

In [22]: df_cat = df.astype["category"]

In [23]: df_cat.dtypes
Out[23]: 
A    category
B    category
dtype: object
_5 mengubah jenis masa depan

In [10]: raw_cat = pd.Categorical[
   ....:     ["a", "b", "c", "a"], categories=["b", "c", "d"], ordered=False
   ....: ]
   ....: 

In [11]: s = pd.Series[raw_cat]

In [12]: s
Out[12]: 
0    NaN
1      b
2      c
3    NaN
dtype: category
Categories [3, object]: ['b', 'c', 'd']

In [13]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [14]: df["B"] = raw_cat

In [15]: df
Out[15]: 
   A    B
0  a  NaN
1  b    b
2  c    c
3  a  NaN
2

Perbandingan

Membandingkan data kategorikal dengan objek lain dimungkinkan dalam tiga kasus

  • Membandingkan kesetaraan [

    In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]
    
    In [4]: df["B"] = df["A"].astype["category"]
    
    In [5]: df
    Out[5]: 
       A  B
    0  a  a
    1  b  b
    2  c  c
    3  a  a
    
    90 dan
    In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]
    
    In [4]: df["B"] = df["A"].astype["category"]
    
    In [5]: df
    Out[5]: 
       A  B
    0  a  a
    1  b  b
    2  c  c
    3  a  a
    
    91] dengan objek seperti daftar [daftar, Seri, larik, …] dengan panjang yang sama dengan data kategorikal

  • Semua perbandingan [

    In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]
    
    In [4]: df["B"] = df["A"].astype["category"]
    
    In [5]: df
    Out[5]: 
       A  B
    0  a  a
    1  b  b
    2  c  c
    3  a  a
    
    90,
    In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]
    
    In [4]: df["B"] = df["A"].astype["category"]
    
    In [5]: df
    Out[5]: 
       A  B
    0  a  a
    1  b  b
    2  c  c
    3  a  a
    
    91,
    In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]
    
    In [4]: df["B"] = df["A"].astype["category"]
    
    In [5]: df
    Out[5]: 
       A  B
    0  a  a
    1  b  b
    2  c  c
    3  a  a
    
    94,
    In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]
    
    In [4]: df["B"] = df["A"].astype["category"]
    
    In [5]: df
    Out[5]: 
       A  B
    0  a  a
    1  b  b
    2  c  c
    3  a  a
    
    95,
    In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]
    
    In [4]: df["B"] = df["A"].astype["category"]
    
    In [5]: df
    Out[5]: 
       A  B
    0  a  a
    1  b  b
    2  c  c
    3  a  a
    
    96, dan
    In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]
    
    In [4]: df["B"] = df["A"].astype["category"]
    
    In [5]: df
    Out[5]: 
       A  B
    0  a  a
    1  b  b
    2  c  c
    3  a  a
    
    97] dari data kategori ke Seri kategori lain, ketika
    In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]
    
    In [4]: df["B"] = df["A"].astype["category"]
    
    In [5]: df
    Out[5]: 
       A  B
    0  a  a
    1  b  b
    2  c  c
    3  a  a
    
    98 dan
    In [21]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}]
    
    In [22]: df_cat = df.astype["category"]
    
    In [23]: df_cat.dtypes
    Out[23]: 
    A    category
    B    category
    dtype: object
    
    5 sama

  • Semua perbandingan data kategorikal dengan skalar

Semua perbandingan lainnya, terutama perbandingan "non-kesetaraan" dari dua kategori dengan kategori yang berbeda atau kategori dengan objek seperti daftar, akan meningkatkan

In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
70

Catatan

Setiap perbandingan "non-kesetaraan" dari data kategorikal dengan

In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
3,
In [6]: df = pd.DataFrame[{"value": np.random.randint[0, 100, 20]}]

In [7]: labels = ["{0} - {1}".format[i, i + 9] for i in range[0, 100, 10]]

In [8]: df["group"] = pd.cut[df.value, range[0, 105, 10], right=False, labels=labels]

In [9]: df.head[10]
Out[9]: 
   value    group
0     65  60 - 69
1     49  40 - 49
2     56  50 - 59
3     43  40 - 49
4     43  40 - 49
5     91  90 - 99
6     32  30 - 39
7     87  80 - 89
8     36  30 - 39
9      8    0 - 9
02,
In [6]: df = pd.DataFrame[{"value": np.random.randint[0, 100, 20]}]

In [7]: labels = ["{0} - {1}".format[i, i + 9] for i in range[0, 100, 10]]

In [8]: df["group"] = pd.cut[df.value, range[0, 105, 10], right=False, labels=labels]

In [9]: df.head[10]
Out[9]: 
   value    group
0     65  60 - 69
1     49  40 - 49
2     56  50 - 59
3     43  40 - 49
4     43  40 - 49
5     91  90 - 99
6     32  30 - 39
7     87  80 - 89
8     36  30 - 39
9      8    0 - 9
03 atau data kategorikal dengan kategori atau pengurutan yang berbeda akan meningkatkan
In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
70 karena pengurutan kategori khusus dapat ditafsirkan dalam dua cara. satu dengan memperhitungkan pemesanan dan satu tanpa

In [10]: raw_cat = pd.Categorical[
   ....:     ["a", "b", "c", "a"], categories=["b", "c", "d"], ordered=False
   ....: ]
   ....: 

In [11]: s = pd.Series[raw_cat]

In [12]: s
Out[12]: 
0    NaN
1      b
2      c
3    NaN
dtype: category
Categories [3, object]: ['b', 'c', 'd']

In [13]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [14]: df["B"] = raw_cat

In [15]: df
Out[15]: 
   A    B
0  a  NaN
1  b    b
2  c    c
3  a  NaN
3

Membandingkan dengan kategorikal dengan kategori dan urutan yang sama atau dengan karya skalar

In [10]: raw_cat = pd.Categorical[
   ....:     ["a", "b", "c", "a"], categories=["b", "c", "d"], ordered=False
   ....: ]
   ....: 

In [11]: s = pd.Series[raw_cat]

In [12]: s
Out[12]: 
0    NaN
1      b
2      c
3    NaN
dtype: category
Categories [3, object]: ['b', 'c', 'd']

In [13]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [14]: df["B"] = raw_cat

In [15]: df
Out[15]: 
   A    B
0  a  NaN
1  b    b
2  c    c
3  a  NaN
4

Perbandingan kesetaraan bekerja dengan objek seperti daftar dengan panjang dan skalar yang sama

In [10]: raw_cat = pd.Categorical[
   ....:     ["a", "b", "c", "a"], categories=["b", "c", "d"], ordered=False
   ....: ]
   ....: 

In [11]: s = pd.Series[raw_cat]

In [12]: s
Out[12]: 
0    NaN
1      b
2      c
3    NaN
dtype: category
Categories [3, object]: ['b', 'c', 'd']

In [13]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [14]: df["B"] = raw_cat

In [15]: df
Out[15]: 
   A    B
0  a  NaN
1  b    b
2  c    c
3  a  NaN
5

Ini tidak berfungsi karena kategorinya tidak sama

In [10]: raw_cat = pd.Categorical[
   ....:     ["a", "b", "c", "a"], categories=["b", "c", "d"], ordered=False
   ....: ]
   ....: 

In [11]: s = pd.Series[raw_cat]

In [12]: s
Out[12]: 
0    NaN
1      b
2      c
3    NaN
dtype: category
Categories [3, object]: ['b', 'c', 'd']

In [13]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [14]: df["B"] = raw_cat

In [15]: df
Out[15]: 
   A    B
0  a  NaN
1  b    b
2  c    c
3  a  NaN
6

Jika Anda ingin melakukan perbandingan "non-kesetaraan" dari seri kategori dengan objek seperti daftar yang bukan data kategori, Anda harus eksplisit dan mengonversi data kategori kembali ke nilai aslinya

In [10]: raw_cat = pd.Categorical[
   ....:     ["a", "b", "c", "a"], categories=["b", "c", "d"], ordered=False
   ....: ]
   ....: 

In [11]: s = pd.Series[raw_cat]

In [12]: s
Out[12]: 
0    NaN
1      b
2      c
3    NaN
dtype: category
Categories [3, object]: ['b', 'c', 'd']

In [13]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [14]: df["B"] = raw_cat

In [15]: df
Out[15]: 
   A    B
0  a  NaN
1  b    b
2  c    c
3  a  NaN
7

Saat Anda membandingkan dua kategori yang tidak diurutkan dengan kategori yang sama, urutannya tidak dipertimbangkan

In [10]: raw_cat = pd.Categorical[
   ....:     ["a", "b", "c", "a"], categories=["b", "c", "d"], ordered=False
   ....: ]
   ....: 

In [11]: s = pd.Series[raw_cat]

In [12]: s
Out[12]: 
0    NaN
1      b
2      c
3    NaN
dtype: category
Categories [3, object]: ['b', 'c', 'd']

In [13]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [14]: df["B"] = raw_cat

In [15]: df
Out[15]: 
   A    B
0  a  NaN
1  b    b
2  c    c
3  a  NaN
8

Operasi

Selain , dan , operasi berikut dimungkinkan dengan data kategorikal

In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
3 metode seperti akan menggunakan semua kategori, bahkan jika beberapa kategori tidak ada dalam data

In [10]: raw_cat = pd.Categorical[
   ....:     ["a", "b", "c", "a"], categories=["b", "c", "d"], ordered=False
   ....: ]
   ....: 

In [11]: s = pd.Series[raw_cat]

In [12]: s
Out[12]: 
0    NaN
1      b
2      c
3    NaN
dtype: category
Categories [3, object]: ['b', 'c', 'd']

In [13]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [14]: df["B"] = raw_cat

In [15]: df
Out[15]: 
   A    B
0  a  NaN
1  b    b
2  c    c
3  a  NaN
_9

In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
_4 metode seperti juga menunjukkan kategori "tidak terpakai".

In [16]: df.dtypes
Out[16]: 
A      object
B    category
dtype: object
0

Groupby juga akan menampilkan kategori "tidak terpakai".

In [16]: df.dtypes
Out[16]: 
A      object
B    category
dtype: object
_1

Tabel pivot

In [16]: df.dtypes
Out[16]: 
A      object
B    category
dtype: object
_2

Pengurangan data

Metode akses data panda yang dioptimalkan

In [6]: df = pd.DataFrame[{"value": np.random.randint[0, 100, 20]}]

In [7]: labels = ["{0} - {1}".format[i, i + 9] for i in range[0, 100, 10]]

In [8]: df["group"] = pd.cut[df.value, range[0, 105, 10], right=False, labels=labels]

In [9]: df.head[10]
Out[9]: 
   value    group
0     65  60 - 69
1     49  40 - 49
2     56  50 - 59
3     43  40 - 49
4     43  40 - 49
5     91  90 - 99
6     32  30 - 39
7     87  80 - 89
8     36  30 - 39
9      8    0 - 9
12,
In [6]: df = pd.DataFrame[{"value": np.random.randint[0, 100, 20]}]

In [7]: labels = ["{0} - {1}".format[i, i + 9] for i in range[0, 100, 10]]

In [8]: df["group"] = pd.cut[df.value, range[0, 105, 10], right=False, labels=labels]

In [9]: df.head[10]
Out[9]: 
   value    group
0     65  60 - 69
1     49  40 - 49
2     56  50 - 59
3     43  40 - 49
4     43  40 - 49
5     91  90 - 99
6     32  30 - 39
7     87  80 - 89
8     36  30 - 39
9      8    0 - 9
13,
In [6]: df = pd.DataFrame[{"value": np.random.randint[0, 100, 20]}]

In [7]: labels = ["{0} - {1}".format[i, i + 9] for i in range[0, 100, 10]]

In [8]: df["group"] = pd.cut[df.value, range[0, 105, 10], right=False, labels=labels]

In [9]: df.head[10]
Out[9]: 
   value    group
0     65  60 - 69
1     49  40 - 49
2     56  50 - 59
3     43  40 - 49
4     43  40 - 49
5     91  90 - 99
6     32  30 - 39
7     87  80 - 89
8     36  30 - 39
9      8    0 - 9
14, dan
In [6]: df = pd.DataFrame[{"value": np.random.randint[0, 100, 20]}]

In [7]: labels = ["{0} - {1}".format[i, i + 9] for i in range[0, 100, 10]]

In [8]: df["group"] = pd.cut[df.value, range[0, 105, 10], right=False, labels=labels]

In [9]: df.head[10]
Out[9]: 
   value    group
0     65  60 - 69
1     49  40 - 49
2     56  50 - 59
3     43  40 - 49
4     43  40 - 49
5     91  90 - 99
6     32  30 - 39
7     87  80 - 89
8     36  30 - 39
9      8    0 - 9
15, berfungsi seperti biasa. Satu-satunya perbedaan adalah jenis pengembalian [untuk mendapatkan] dan hanya nilai yang sudah ada di
In [21]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}]

In [22]: df_cat = df.astype["category"]

In [23]: df_cat.dtypes
Out[23]: 
A    category
B    category
dtype: object
5 yang dapat ditetapkan

Mendapatkan

Jika operasi pemotongan mengembalikan

In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
4 atau kolom bertipe
In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
3, tipe d
In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
8 dipertahankan

In [16]: df.dtypes
Out[16]: 
A      object
B    category
dtype: object
_3

Contoh di mana jenis kategori tidak dipertahankan adalah jika Anda mengambil satu baris.

In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
_3 yang dihasilkan adalah tipe
In [6]: df = pd.DataFrame[{"value": np.random.randint[0, 100, 20]}]

In [7]: labels = ["{0} - {1}".format[i, i + 9] for i in range[0, 100, 10]]

In [8]: df["group"] = pd.cut[df.value, range[0, 105, 10], right=False, labels=labels]

In [9]: df.head[10]
Out[9]: 
   value    group
0     65  60 - 69
1     49  40 - 49
2     56  50 - 59
3     43  40 - 49
4     43  40 - 49
5     91  90 - 99
6     32  30 - 39
7     87  80 - 89
8     36  30 - 39
9      8    0 - 9
21

In [16]: df.dtypes
Out[16]: 
A      object
B    category
dtype: object
_4

Mengembalikan satu item dari data kategorikal juga akan mengembalikan nilai, bukan kategori dengan panjang "1"

In [16]: df.dtypes
Out[16]: 
A      object
B    category
dtype: object
_5

Catatan

Berbeda dengan fungsi

In [21]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}]

In [22]: df_cat = df.astype["category"]

In [23]: df_cat.dtypes
Out[23]: 
A    category
B    category
dtype: object
3 R, di mana
In [6]: df = pd.DataFrame[{"value": np.random.randint[0, 100, 20]}]

In [7]: labels = ["{0} - {1}".format[i, i + 9] for i in range[0, 100, 10]]

In [8]: df["group"] = pd.cut[df.value, range[0, 105, 10], right=False, labels=labels]

In [9]: df.head[10]
Out[9]: 
   value    group
0     65  60 - 69
1     49  40 - 49
2     56  50 - 59
3     43  40 - 49
4     43  40 - 49
5     91  90 - 99
6     32  30 - 39
7     87  80 - 89
8     36  30 - 39
9      8    0 - 9
23 mengembalikan nilai tunggal
In [21]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}]

In [22]: df_cat = df.astype["category"]

In [23]: df_cat.dtypes
Out[23]: 
A    category
B    category
dtype: object
3

Untuk mendapatkan nilai tunggal

In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
3 bertipe
In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
8, Anda memasukkan daftar dengan satu nilai

In [16]: df.dtypes
Out[16]: 
A      object
B    category
dtype: object
_6

Pengakses string dan datetime

Pengakses

In [6]: df = pd.DataFrame[{"value": np.random.randint[0, 100, 20]}]

In [7]: labels = ["{0} - {1}".format[i, i + 9] for i in range[0, 100, 10]]

In [8]: df["group"] = pd.cut[df.value, range[0, 105, 10], right=False, labels=labels]

In [9]: df.head[10]
Out[9]: 
   value    group
0     65  60 - 69
1     49  40 - 49
2     56  50 - 59
3     43  40 - 49
4     43  40 - 49
5     91  90 - 99
6     32  30 - 39
7     87  80 - 89
8     36  30 - 39
9      8    0 - 9
27 dan
In [6]: df = pd.DataFrame[{"value": np.random.randint[0, 100, 20]}]

In [7]: labels = ["{0} - {1}".format[i, i + 9] for i in range[0, 100, 10]]

In [8]: df["group"] = pd.cut[df.value, range[0, 105, 10], right=False, labels=labels]

In [9]: df.head[10]
Out[9]: 
   value    group
0     65  60 - 69
1     49  40 - 49
2     56  50 - 59
3     43  40 - 49
4     43  40 - 49
5     91  90 - 99
6     32  30 - 39
7     87  80 - 89
8     36  30 - 39
9      8    0 - 9
28 akan berfungsi jika
In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
48 adalah jenis yang sesuai

In [16]: df.dtypes
Out[16]: 
A      object
B    category
dtype: object
_7

Catatan

In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
3 [atau
In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
4] yang dikembalikan memiliki jenis yang sama seperti jika Anda menggunakan
In [6]: df = pd.DataFrame[{"value": np.random.randint[0, 100, 20]}]

In [7]: labels = ["{0} - {1}".format[i, i + 9] for i in range[0, 100, 10]]

In [8]: df["group"] = pd.cut[df.value, range[0, 105, 10], right=False, labels=labels]

In [9]: df.head[10]
Out[9]: 
   value    group
0     65  60 - 69
1     49  40 - 49
2     56  50 - 59
3     43  40 - 49
4     43  40 - 49
5     91  90 - 99
6     32  30 - 39
7     87  80 - 89
8     36  30 - 39
9      8    0 - 9
32 /
In [6]: df = pd.DataFrame[{"value": np.random.randint[0, 100, 20]}]

In [7]: labels = ["{0} - {1}".format[i, i + 9] for i in range[0, 100, 10]]

In [8]: df["group"] = pd.cut[df.value, range[0, 105, 10], right=False, labels=labels]

In [9]: df.head[10]
Out[9]: 
   value    group
0     65  60 - 69
1     49  40 - 49
2     56  50 - 59
3     43  40 - 49
4     43  40 - 49
5     91  90 - 99
6     32  30 - 39
7     87  80 - 89
8     36  30 - 39
9      8    0 - 9
33 pada
In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
3 dari jenis tersebut [dan bukan dari jenis
In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
8. ]

Artinya, nilai yang dikembalikan dari metode dan properti pada pengakses

In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
3 dan nilai yang dikembalikan dari metode dan properti pada pengakses
In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
3 ini diubah menjadi salah satu tipe
In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
8 akan sama

In [16]: df.dtypes
Out[16]: 
A      object
B    category
dtype: object
_8

Catatan

Pekerjaan dilakukan pada

In [21]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}]

In [22]: df_cat = df.astype["category"]

In [23]: df_cat.dtypes
Out[23]: 
A    category
B    category
dtype: object
5 dan kemudian
In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
3 baru dibangun. Ini memiliki beberapa implikasi kinerja jika Anda memiliki
In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
3 tipe string, di mana banyak elemen diulang [i. e. jumlah elemen unik di
In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
_3 jauh lebih kecil dari panjang
In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
3]. Dalam hal ini akan lebih cepat untuk mengonversi
In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
3 asli ke salah satu jenis
In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
8 dan menggunakan
In [6]: df = pd.DataFrame[{"value": np.random.randint[0, 100, 20]}]

In [7]: labels = ["{0} - {1}".format[i, i + 9] for i in range[0, 100, 10]]

In [8]: df["group"] = pd.cut[df.value, range[0, 105, 10], right=False, labels=labels]

In [9]: df.head[10]
Out[9]: 
   value    group
0     65  60 - 69
1     49  40 - 49
2     56  50 - 59
3     43  40 - 49
4     43  40 - 49
5     91  90 - 99
6     32  30 - 39
7     87  80 - 89
8     36  30 - 39
9      8    0 - 9
32 atau
In [6]: df = pd.DataFrame[{"value": np.random.randint[0, 100, 20]}]

In [7]: labels = ["{0} - {1}".format[i, i + 9] for i in range[0, 100, 10]]

In [8]: df["group"] = pd.cut[df.value, range[0, 105, 10], right=False, labels=labels]

In [9]: df.head[10]
Out[9]: 
   value    group
0     65  60 - 69
1     49  40 - 49
2     56  50 - 59
3     43  40 - 49
4     43  40 - 49
5     91  90 - 99
6     32  30 - 39
7     87  80 - 89
8     36  30 - 39
9      8    0 - 9
47 pada itu

Pengaturan

Menetapkan nilai dalam kolom kategorikal [atau

In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
3] berfungsi selama nilai disertakan dalam
In [21]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}]

In [22]: df_cat = df.astype["category"]

In [23]: df_cat.dtypes
Out[23]: 
A    category
B    category
dtype: object
5

In [16]: df.dtypes
Out[16]: 
A      object
B    category
dtype: object
_9

Menetapkan nilai dengan menetapkan data kategorikal juga akan memeriksa apakah

In [21]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}]

In [22]: df_cat = df.astype["category"]

In [23]: df_cat.dtypes
Out[23]: 
A    category
B    category
dtype: object
5 cocok

In [17]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}, dtype="category"]

In [18]: df.dtypes
Out[18]: 
A    category
B    category
dtype: object
_0

Menetapkan

In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
51 ke bagian kolom jenis lain akan menggunakan nilai

In [17]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}, dtype="category"]

In [18]: df.dtypes
Out[18]: 
A    category
B    category
dtype: object
_1

Penggabungan / Penggabungan

Secara default, menggabungkan

In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
3 atau
In [6]: df = pd.DataFrame[{"value": np.random.randint[0, 100, 20]}]

In [7]: labels = ["{0} - {1}".format[i, i + 9] for i in range[0, 100, 10]]

In [8]: df["group"] = pd.cut[df.value, range[0, 105, 10], right=False, labels=labels]

In [9]: df.head[10]
Out[9]: 
   value    group
0     65  60 - 69
1     49  40 - 49
2     56  50 - 59
3     43  40 - 49
4     43  40 - 49
5     91  90 - 99
6     32  30 - 39
7     87  80 - 89
8     36  30 - 39
9      8    0 - 9
53 yang berisi kategori yang sama menghasilkan
In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
8 dtype, jika tidak, hasil akan tergantung pada dtype dari kategori yang mendasarinya. Penggabungan yang menghasilkan tipe non-kategori kemungkinan akan memiliki penggunaan memori yang lebih tinggi. Gunakan
In [6]: df = pd.DataFrame[{"value": np.random.randint[0, 100, 20]}]

In [7]: labels = ["{0} - {1}".format[i, i + 9] for i in range[0, 100, 10]]

In [8]: df["group"] = pd.cut[df.value, range[0, 105, 10], right=False, labels=labels]

In [9]: df.head[10]
Out[9]: 
   value    group
0     65  60 - 69
1     49  40 - 49
2     56  50 - 59
3     43  40 - 49
4     43  40 - 49
5     91  90 - 99
6     32  30 - 39
7     87  80 - 89
8     36  30 - 39
9      8    0 - 9
_55 atau
In [6]: df = pd.DataFrame[{"value": np.random.randint[0, 100, 20]}]

In [7]: labels = ["{0} - {1}".format[i, i + 9] for i in range[0, 100, 10]]

In [8]: df["group"] = pd.cut[df.value, range[0, 105, 10], right=False, labels=labels]

In [9]: df.head[10]
Out[9]: 
   value    group
0     65  60 - 69
1     49  40 - 49
2     56  50 - 59
3     43  40 - 49
4     43  40 - 49
5     91  90 - 99
6     32  30 - 39
7     87  80 - 89
8     36  30 - 39
9      8    0 - 9
56 untuk memastikan hasil
In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
8

In [17]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}, dtype="category"]

In [18]: df.dtypes
Out[18]: 
A    category
B    category
dtype: object
_2

Tabel berikut merangkum hasil penggabungan

In [21]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}]

In [22]: df_cat = df.astype["category"]

In [23]: df_cat.dtypes
Out[23]: 
A    category
B    category
dtype: object
4

argumen1

arg2

identik

hasil

kategori

kategori

BENAR

kategori

kategori [objek]

kategori [objek]

PALSU

objek [dtype disimpulkan]

kategori [int]

kategori [melayang]

PALSU

float [dtype disimpulkan]

Lihat juga bagian untuk catatan tentang mempertahankan tipe dan kinerja gabungan

Berserikat

Jika Anda ingin menggabungkan kategorikal yang belum tentu memiliki kategori yang sama, fungsi akan menggabungkan daftar seperti kategorikal. Kategori baru akan menjadi gabungan dari kategori yang digabungkan

In [17]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}, dtype="category"]

In [18]: df.dtypes
Out[18]: 
A    category
B    category
dtype: object
_3

Secara default, kategori yang dihasilkan akan diurutkan saat muncul di data. Jika Anda ingin kategori disortir, gunakan argumen

In [6]: df = pd.DataFrame[{"value": np.random.randint[0, 100, 20]}]

In [7]: labels = ["{0} - {1}".format[i, i + 9] for i in range[0, 100, 10]]

In [8]: df["group"] = pd.cut[df.value, range[0, 105, 10], right=False, labels=labels]

In [9]: df.head[10]
Out[9]: 
   value    group
0     65  60 - 69
1     49  40 - 49
2     56  50 - 59
3     43  40 - 49
4     43  40 - 49
5     91  90 - 99
6     32  30 - 39
7     87  80 - 89
8     36  30 - 39
9      8    0 - 9
60

In [17]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}, dtype="category"]

In [18]: df.dtypes
Out[18]: 
A    category
B    category
dtype: object
_4

In [6]: df = pd.DataFrame[{"value": np.random.randint[0, 100, 20]}]

In [7]: labels = ["{0} - {1}".format[i, i + 9] for i in range[0, 100, 10]]

In [8]: df["group"] = pd.cut[df.value, range[0, 105, 10], right=False, labels=labels]

In [9]: df.head[10]
Out[9]: 
   value    group
0     65  60 - 69
1     49  40 - 49
2     56  50 - 59
3     43  40 - 49
4     43  40 - 49
5     91  90 - 99
6     32  30 - 39
7     87  80 - 89
8     36  30 - 39
9      8    0 - 9
_56 juga bekerja dengan kasus "mudah" menggabungkan dua kategori dari kategori yang sama dan memesan informasi [e. g. apa yang Anda juga bisa
In [6]: df = pd.DataFrame[{"value": np.random.randint[0, 100, 20]}]

In [7]: labels = ["{0} - {1}".format[i, i + 9] for i in range[0, 100, 10]]

In [8]: df["group"] = pd.cut[df.value, range[0, 105, 10], right=False, labels=labels]

In [9]: df.head[10]
Out[9]: 
   value    group
0     65  60 - 69
1     49  40 - 49
2     56  50 - 59
3     43  40 - 49
4     43  40 - 49
5     91  90 - 99
6     32  30 - 39
7     87  80 - 89
8     36  30 - 39
9      8    0 - 9
_62 untuk]

In [17]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}, dtype="category"]

In [18]: df.dtypes
Out[18]: 
A    category
B    category
dtype: object
_5

Di bawah ini memunculkan

In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
_70 karena kategorinya dipesan dan tidak identik

In [17]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}, dtype="category"]

In [18]: df.dtypes
Out[18]: 
A    category
B    category
dtype: object
_6

Kategorikal terurut dengan kategori berbeda atau pengurutan dapat digabungkan dengan menggunakan argumen

In [6]: df = pd.DataFrame[{"value": np.random.randint[0, 100, 20]}]

In [7]: labels = ["{0} - {1}".format[i, i + 9] for i in range[0, 100, 10]]

In [8]: df["group"] = pd.cut[df.value, range[0, 105, 10], right=False, labels=labels]

In [9]: df.head[10]
Out[9]: 
   value    group
0     65  60 - 69
1     49  40 - 49
2     56  50 - 59
3     43  40 - 49
4     43  40 - 49
5     91  90 - 99
6     32  30 - 39
7     87  80 - 89
8     36  30 - 39
9      8    0 - 9
64

In [17]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}, dtype="category"]

In [18]: df.dtypes
Out[18]: 
A    category
B    category
dtype: object
_7

juga berfungsi dengan

In [6]: df = pd.DataFrame[{"value": np.random.randint[0, 100, 20]}]

In [7]: labels = ["{0} - {1}".format[i, i + 9] for i in range[0, 100, 10]]

In [8]: df["group"] = pd.cut[df.value, range[0, 105, 10], right=False, labels=labels]

In [9]: df.head[10]
Out[9]: 
   value    group
0     65  60 - 69
1     49  40 - 49
2     56  50 - 59
3     43  40 - 49
4     43  40 - 49
5     91  90 - 99
6     32  30 - 39
7     87  80 - 89
8     36  30 - 39
9      8    0 - 9
66, atau
In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
3 yang berisi data kategori, tetapi perhatikan bahwa larik yang dihasilkan akan selalu berupa
In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
51

In [17]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}, dtype="category"]

In [18]: df.dtypes
Out[18]: 
A    category
B    category
dtype: object
_8

Catatan

In [6]: df = pd.DataFrame[{"value": np.random.randint[0, 100, 20]}]

In [7]: labels = ["{0} - {1}".format[i, i + 9] for i in range[0, 100, 10]]

In [8]: df["group"] = pd.cut[df.value, range[0, 105, 10], right=False, labels=labels]

In [9]: df.head[10]
Out[9]: 
   value    group
0     65  60 - 69
1     49  40 - 49
2     56  50 - 59
3     43  40 - 49
4     43  40 - 49
5     91  90 - 99
6     32  30 - 39
7     87  80 - 89
8     36  30 - 39
9      8    0 - 9
_56 dapat mengode ulang kode bilangan bulat untuk kategori saat menggabungkan kategorikal. Ini mungkin yang Anda inginkan, tetapi jika Anda mengandalkan penomoran kategori yang tepat, berhati-hatilah

In [17]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}, dtype="category"]

In [18]: df.dtypes
Out[18]: 
A    category
B    category
dtype: object
_9

Mendapatkan data masuk/keluar

Anda dapat menulis data yang berisi

In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
8 dtypes ke
In [6]: df = pd.DataFrame[{"value": np.random.randint[0, 100, 20]}]

In [7]: labels = ["{0} - {1}".format[i, i + 9] for i in range[0, 100, 10]]

In [8]: df["group"] = pd.cut[df.value, range[0, 105, 10], right=False, labels=labels]

In [9]: df.head[10]
Out[9]: 
   value    group
0     65  60 - 69
1     49  40 - 49
2     56  50 - 59
3     43  40 - 49
4     43  40 - 49
5     91  90 - 99
6     32  30 - 39
7     87  80 - 89
8     36  30 - 39
9      8    0 - 9
_71. Lihat untuk contoh dan peringatan

Dimungkinkan juga untuk menulis data ke dan membaca data dari file format Stata. Lihat untuk contoh dan peringatan

Menulis ke file CSV akan mengonversi data, secara efektif menghapus informasi apa pun tentang kategorikal [kategori dan pemesanan]. Jadi, jika Anda membaca kembali file CSV, Anda harus mengonversi kolom yang relevan kembali ke

In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
8 dan menetapkan kategori dan urutan kategori yang tepat

In [19]: df["A"]
Out[19]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [20]: df["B"]
Out[20]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
0

Hal yang sama berlaku untuk menulis ke database SQL dengan

In [6]: df = pd.DataFrame[{"value": np.random.randint[0, 100, 20]}]

In [7]: labels = ["{0} - {1}".format[i, i + 9] for i in range[0, 100, 10]]

In [8]: df["group"] = pd.cut[df.value, range[0, 105, 10], right=False, labels=labels]

In [9]: df.head[10]
Out[9]: 
   value    group
0     65  60 - 69
1     49  40 - 49
2     56  50 - 59
3     43  40 - 49
4     43  40 - 49
5     91  90 - 99
6     32  30 - 39
7     87  80 - 89
8     36  30 - 39
9      8    0 - 9
73

Data hilang

panda terutama menggunakan nilai

In [21]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}]

In [22]: df_cat = df.astype["category"]

In [23]: df_cat.dtypes
Out[23]: 
A    category
B    category
dtype: object
_8 untuk mewakili data yang hilang. Ini secara default tidak termasuk dalam perhitungan. Lihat

Nilai yang hilang tidak boleh disertakan dalam

In [21]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}]

In [22]: df_cat = df.astype["category"]

In [23]: df_cat.dtypes
Out[23]: 
A    category
B    category
dtype: object
5 Kategorikal, hanya dalam
In [6]: df = pd.DataFrame[{"value": np.random.randint[0, 100, 20]}]

In [7]: labels = ["{0} - {1}".format[i, i + 9] for i in range[0, 100, 10]]

In [8]: df["group"] = pd.cut[df.value, range[0, 105, 10], right=False, labels=labels]

In [9]: df.head[10]
Out[9]: 
   value    group
0     65  60 - 69
1     49  40 - 49
2     56  50 - 59
3     43  40 - 49
4     43  40 - 49
5     91  90 - 99
6     32  30 - 39
7     87  80 - 89
8     36  30 - 39
9      8    0 - 9
76. Sebaliknya, dipahami bahwa NaN berbeda, dan selalu ada kemungkinan. Saat bekerja dengan
In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
1 Kategorikal, nilai yang hilang akan selalu memiliki kode
In [6]: df = pd.DataFrame[{"value": np.random.randint[0, 100, 20]}]

In [7]: labels = ["{0} - {1}".format[i, i + 9] for i in range[0, 100, 10]]

In [8]: df["group"] = pd.cut[df.value, range[0, 105, 10], right=False, labels=labels]

In [9]: df.head[10]
Out[9]: 
   value    group
0     65  60 - 69
1     49  40 - 49
2     56  50 - 59
3     43  40 - 49
4     43  40 - 49
5     91  90 - 99
6     32  30 - 39
7     87  80 - 89
8     36  30 - 39
9      8    0 - 9
78

In [19]: df["A"]
Out[19]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [20]: df["B"]
Out[20]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
1

Metode untuk bekerja dengan data yang hilang, e. g. , , , semua berfungsi normal

In [19]: df["A"]
Out[19]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [20]: df["B"]
Out[20]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
2

Perbedaan dengan R
In [21]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}]

In [22]: df_cat = df.astype["category"]

In [23]: df_cat.dtypes
Out[23]: 
A    category
B    category
dtype: object
3

Perbedaan fungsi faktor R berikut dapat diamati

  • R

    In [21]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}]
    
    In [22]: df_cat = df.astype["category"]
    
    In [23]: df_cat.dtypes
    Out[23]: 
    A    category
    B    category
    dtype: object
    
    6 diberi nama
    In [21]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}]
    
    In [22]: df_cat = df.astype["category"]
    
    In [23]: df_cat.dtypes
    Out[23]: 
    A    category
    B    category
    dtype: object
    
    5

  • In [21]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}]
    
    In [22]: df_cat = df.astype["category"]
    
    In [23]: df_cat.dtypes
    Out[23]: 
    A    category
    B    category
    dtype: object
    
    6 R selalu bertipe string, sementara
    In [21]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}]
    
    In [22]: df_cat = df.astype["category"]
    
    In [23]: df_cat.dtypes
    Out[23]: 
    A    category
    B    category
    dtype: object
    
    5 di panda bisa bertipe apa saja

  • Tidak mungkin menentukan label pada waktu pembuatan. Gunakan

    In [6]: df = pd.DataFrame[{"value": np.random.randint[0, 100, 20]}]
    
    In [7]: labels = ["{0} - {1}".format[i, i + 9] for i in range[0, 100, 10]]
    
    In [8]: df["group"] = pd.cut[df.value, range[0, 105, 10], right=False, labels=labels]
    
    In [9]: df.head[10]
    Out[9]: 
       value    group
    0     65  60 - 69
    1     49  40 - 49
    2     56  50 - 59
    3     43  40 - 49
    4     43  40 - 49
    5     91  90 - 99
    6     32  30 - 39
    7     87  80 - 89
    8     36  30 - 39
    9      8    0 - 9
    
    _87 sesudahnya

  • Berbeda dengan fungsi

    In [21]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}]
    
    In [22]: df_cat = df.astype["category"]
    
    In [23]: df_cat.dtypes
    Out[23]: 
    A    category
    B    category
    dtype: object
    
    3 R, menggunakan data kategori sebagai satu-satunya input untuk membuat seri kategori baru tidak akan menghapus kategori yang tidak digunakan tetapi membuat seri kategori baru yang sama dengan yang diteruskan dalam satu

  • R memungkinkan nilai yang hilang untuk dimasukkan ke dalam

    In [21]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}]
    
    In [22]: df_cat = df.astype["category"]
    
    In [23]: df_cat.dtypes
    Out[23]: 
    A    category
    B    category
    dtype: object
    
    6 [panda
    In [21]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}]
    
    In [22]: df_cat = df.astype["category"]
    
    In [23]: df_cat.dtypes
    Out[23]: 
    A    category
    B    category
    dtype: object
    
    5]. panda tidak mengizinkan
    In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]
    
    In [4]: df["B"] = df["A"].astype["category"]
    
    In [5]: df
    Out[5]: 
       A  B
    0  a  a
    1  b  b
    2  c  c
    3  a  a
    
    _61 kategori, tetapi nilai yang hilang masih bisa berada di
    In [6]: df = pd.DataFrame[{"value": np.random.randint[0, 100, 20]}]
    
    In [7]: labels = ["{0} - {1}".format[i, i + 9] for i in range[0, 100, 10]]
    
    In [8]: df["group"] = pd.cut[df.value, range[0, 105, 10], right=False, labels=labels]
    
    In [9]: df.head[10]
    Out[9]: 
       value    group
    0     65  60 - 69
    1     49  40 - 49
    2     56  50 - 59
    3     43  40 - 49
    4     43  40 - 49
    5     91  90 - 99
    6     32  30 - 39
    7     87  80 - 89
    8     36  30 - 39
    9      8    0 - 9
    
    76

Gotcha

penggunaan memori

Penggunaan memori

In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
_51 sebanding dengan jumlah kategori ditambah panjang data. Sebaliknya, tipe
In [6]: df = pd.DataFrame[{"value": np.random.randint[0, 100, 20]}]

In [7]: labels = ["{0} - {1}".format[i, i + 9] for i in range[0, 100, 10]]

In [8]: df["group"] = pd.cut[df.value, range[0, 105, 10], right=False, labels=labels]

In [9]: df.head[10]
Out[9]: 
   value    group
0     65  60 - 69
1     49  40 - 49
2     56  50 - 59
3     43  40 - 49
4     43  40 - 49
5     91  90 - 99
6     32  30 - 39
7     87  80 - 89
8     36  30 - 39
9      8    0 - 9
_21 adalah konstanta dikalikan panjang data

In [19]: df["A"]
Out[19]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [20]: df["B"]
Out[20]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
3

Catatan

Jika jumlah kategori mendekati panjang data,

In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
51 akan menggunakan memori yang hampir sama atau lebih banyak daripada representasi dtype
In [6]: df = pd.DataFrame[{"value": np.random.randint[0, 100, 20]}]

In [7]: labels = ["{0} - {1}".format[i, i + 9] for i in range[0, 100, 10]]

In [8]: df["group"] = pd.cut[df.value, range[0, 105, 10], right=False, labels=labels]

In [9]: df.head[10]
Out[9]: 
   value    group
0     65  60 - 69
1     49  40 - 49
2     56  50 - 59
3     43  40 - 49
4     43  40 - 49
5     91  90 - 99
6     32  30 - 39
7     87  80 - 89
8     36  30 - 39
9      8    0 - 9
21 yang setara

In [19]: df["A"]
Out[19]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [20]: df["B"]
Out[20]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
4

In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
51 bukan larik
In [6]: df = pd.DataFrame[{"value": np.random.randint[0, 100, 20]}]

In [7]: labels = ["{0} - {1}".format[i, i + 9] for i in range[0, 100, 10]]

In [8]: df["group"] = pd.cut[df.value, range[0, 105, 10], right=False, labels=labels]

In [9]: df.head[10]
Out[9]: 
   value    group
0     65  60 - 69
1     49  40 - 49
2     56  50 - 59
3     43  40 - 49
4     43  40 - 49
5     91  90 - 99
6     32  30 - 39
7     87  80 - 89
8     36  30 - 39
9      8    0 - 9
98

Saat ini, data kategorikal dan

In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
51 yang mendasarinya diimplementasikan sebagai objek Python dan bukan sebagai tipe array NumPy level rendah. Hal ini menyebabkan beberapa masalah

NumPy sendiri tidak tahu tentang

In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
22 yang baru

In [19]: df["A"]
Out[19]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [20]: df["B"]
Out[20]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
5

Perbandingan Dtype berfungsi

In [19]: df["A"]
Out[19]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [20]: df["B"]
Out[20]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
6

Untuk memeriksa apakah Seri berisi data Kategorikal, gunakan

In [10]: raw_cat = pd.Categorical[
   ....:     ["a", "b", "c", "a"], categories=["b", "c", "d"], ordered=False
   ....: ]
   ....: 

In [11]: s = pd.Series[raw_cat]

In [12]: s
Out[12]: 
0    NaN
1      b
2      c
3    NaN
dtype: category
Categories [3, object]: ['b', 'c', 'd']

In [13]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [14]: df["B"] = raw_cat

In [15]: df
Out[15]: 
   A    B
0  a  NaN
1  b    b
2  c    c
3  a  NaN
01

In [19]: df["A"]
Out[19]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [20]: df["B"]
Out[20]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
7

Menggunakan fungsi NumPy pada

In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
3 bertipe
In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
8 seharusnya tidak berfungsi karena
In [21]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}]

In [22]: df_cat = df.astype["category"]

In [23]: df_cat.dtypes
Out[23]: 
A    category
B    category
dtype: object
4 bukan data numerik [meskipun
In [10]: raw_cat = pd.Categorical[
   ....:     ["a", "b", "c", "a"], categories=["b", "c", "d"], ordered=False
   ....: ]
   ....: 

In [11]: s = pd.Series[raw_cat]

In [12]: s
Out[12]: 
0    NaN
1      b
2      c
3    NaN
dtype: category
Categories [3, object]: ['b', 'c', 'd']

In [13]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [14]: df["B"] = raw_cat

In [15]: df
Out[15]: 
   A    B
0  a  NaN
1  b    b
2  c    c
3  a  NaN
05 adalah numerik]

In [19]: df["A"]
Out[19]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [20]: df["B"]
Out[20]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
8

Catatan

Jika fungsi seperti itu berfungsi, harap laporkan bug di https. //github. com/pandas-dev/pandas

dtype di apply

pandas saat ini tidak mempertahankan dtype dalam fungsi penerapan. Jika Anda menerapkan sepanjang baris Anda mendapatkan

In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
3 dari
In [6]: df = pd.DataFrame[{"value": np.random.randint[0, 100, 20]}]

In [7]: labels = ["{0} - {1}".format[i, i + 9] for i in range[0, 100, 10]]

In [8]: df["group"] = pd.cut[df.value, range[0, 105, 10], right=False, labels=labels]

In [9]: df.head[10]
Out[9]: 
   value    group
0     65  60 - 69
1     49  40 - 49
2     56  50 - 59
3     43  40 - 49
4     43  40 - 49
5     91  90 - 99
6     32  30 - 39
7     87  80 - 89
8     36  30 - 39
9      8    0 - 9
21
In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
22 [sama seperti mendapatkan baris -> mendapatkan satu elemen akan mengembalikan tipe dasar] dan menerapkan sepanjang kolom juga akan dikonversi menjadi objek.
In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
61 nilai tidak terpengaruh. Anda dapat menggunakan
In [10]: raw_cat = pd.Categorical[
   ....:     ["a", "b", "c", "a"], categories=["b", "c", "d"], ordered=False
   ....: ]
   ....: 

In [11]: s = pd.Series[raw_cat]

In [12]: s
Out[12]: 
0    NaN
1      b
2      c
3    NaN
dtype: category
Categories [3, object]: ['b', 'c', 'd']

In [13]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [14]: df["B"] = raw_cat

In [15]: df
Out[15]: 
   A    B
0  a  NaN
1  b    b
2  c    c
3  a  NaN
10 untuk menangani nilai yang hilang sebelum menerapkan suatu fungsi

In [19]: df["A"]
Out[19]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [20]: df["B"]
Out[20]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
_9

Indeks kategoris

In [6]: df = pd.DataFrame[{"value": np.random.randint[0, 100, 20]}]

In [7]: labels = ["{0} - {1}".format[i, i + 9] for i in range[0, 100, 10]]

In [8]: df["group"] = pd.cut[df.value, range[0, 105, 10], right=False, labels=labels]

In [9]: df.head[10]
Out[9]: 
   value    group
0     65  60 - 69
1     49  40 - 49
2     56  50 - 59
3     43  40 - 49
4     43  40 - 49
5     91  90 - 99
6     32  30 - 39
7     87  80 - 89
8     36  30 - 39
9      8    0 - 9
_66 adalah jenis indeks yang berguna untuk mendukung pengindeksan dengan duplikat. Ini adalah wadah di sekitar
In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
_51 dan memungkinkan pengindeksan dan penyimpanan indeks yang efisien dengan sejumlah besar elemen duplikat. Lihat untuk penjelasan lebih rinci

Mengatur indeks akan membuat

In [6]: df = pd.DataFrame[{"value": np.random.randint[0, 100, 20]}]

In [7]: labels = ["{0} - {1}".format[i, i + 9] for i in range[0, 100, 10]]

In [8]: df["group"] = pd.cut[df.value, range[0, 105, 10], right=False, labels=labels]

In [9]: df.head[10]
Out[9]: 
   value    group
0     65  60 - 69
1     49  40 - 49
2     56  50 - 59
3     43  40 - 49
4     43  40 - 49
5     91  90 - 99
6     32  30 - 39
7     87  80 - 89
8     36  30 - 39
9      8    0 - 9
66

In [21]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}]

In [22]: df_cat = df.astype["category"]

In [23]: df_cat.dtypes
Out[23]: 
A    category
B    category
dtype: object
0

Efek samping

Membangun

In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
3 dari
In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
51 tidak akan menyalin input
In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
51. Ini berarti bahwa perubahan pada
In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories [3, object]: ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories [3, object]: ['b', 'c', 'd']
_3 dalam banyak kasus akan mengubah
In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
51 asli

In [21]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}]

In [22]: df_cat = df.astype["category"]

In [23]: df_cat.dtypes
Out[23]: 
A    category
B    category
dtype: object
_1

Gunakan

In [10]: raw_cat = pd.Categorical[
   ....:     ["a", "b", "c", "a"], categories=["b", "c", "d"], ordered=False
   ....: ]
   ....: 

In [11]: s = pd.Series[raw_cat]

In [12]: s
Out[12]: 
0    NaN
1      b
2      c
3    NaN
dtype: category
Categories [3, object]: ['b', 'c', 'd']

In [13]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [14]: df["B"] = raw_cat

In [15]: df
Out[15]: 
   A    B
0  a  NaN
1  b    b
2  c    c
3  a  NaN
_19 untuk mencegah perilaku seperti itu atau jangan gunakan kembali
In [21]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}]

In [22]: df_cat = df.astype["category"]

In [23]: df_cat.dtypes
Out[23]: 
A    category
B    category
dtype: object
4

In [21]: df = pd.DataFrame[{"A": list["abca"], "B": list["bccd"]}]

In [22]: df_cat = df.astype["category"]

In [23]: df_cat.dtypes
Out[23]: 
A    category
B    category
dtype: object
_2

Catatan

Ini juga terjadi dalam beberapa kasus ketika Anda menyediakan larik NumPy alih-alih

In [3]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [4]: df["B"] = df["A"].astype["category"]

In [5]: df
Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a
51. menggunakan array int [mis. g.
In [10]: raw_cat = pd.Categorical[
   ....:     ["a", "b", "c", "a"], categories=["b", "c", "d"], ordered=False
   ....: ]
   ....: 

In [11]: s = pd.Series[raw_cat]

In [12]: s
Out[12]: 
0    NaN
1      b
2      c
3    NaN
dtype: category
Categories [3, object]: ['b', 'c', 'd']

In [13]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [14]: df["B"] = raw_cat

In [15]: df
Out[15]: 
   A    B
0  a  NaN
1  b    b
2  c    c
3  a  NaN
22] akan menunjukkan perilaku yang sama, saat menggunakan larik string [mis. g.
In [10]: raw_cat = pd.Categorical[
   ....:     ["a", "b", "c", "a"], categories=["b", "c", "d"], ordered=False
   ....: ]
   ....: 

In [11]: s = pd.Series[raw_cat]

In [12]: s
Out[12]: 
0    NaN
1      b
2      c
3    NaN
dtype: category
Categories [3, object]: ['b', 'c', 'd']

In [13]: df = pd.DataFrame[{"A": ["a", "b", "c", "a"]}]

In [14]: df["B"] = raw_cat

In [15]: df
Out[15]: 
   A    B
0  a  NaN
1  b    b
2  c    c
3  a  NaN
23] tidak akan

Bagaimana Anda membandingkan dua variabel kategori?

Uji chi-square digunakan saat Anda ingin melihat apakah ada hubungan antara dua variabel kategori.

Bagaimana cara memeriksa korelasi antara dua variabel kategori dengan Python?

Jika variabel kategori hanya memiliki dua nilai [mis. e. benar/salah], maka kita dapat mengubahnya menjadi tipe data numerik [0 dan 1]. Karena menjadi variabel numerik, kita bisa mengetahui korelasinya menggunakan dataframe. fungsi corr[] .

Bisakah Anda menghubungkan dua variabel kategori?

Selanjutnya, jika salah satu variabel dari pasangan adalah kategori, kita tidak dapat menggunakan koefisien korelasi . Kami harus beralih ke metrik lain. Jika x dan y keduanya kategorikal, kita dapat mencoba Cramer's V atau koefisien phi.

Grafik apa yang digunakan untuk dua variabel kategori di Python?

Data tentang dua kategori [mis. e. , variabel tingkat nominal atau ordinal] dapat ditampilkan dalam tabel kontingensi dua arah, bagan batang tergugus, atau bagan batang tumpuk . Di sini, kita akan melihat contoh masing-masing.

Bài mới nhất

Chủ Đề