Yah mereka berbeda jelas, saya pikir Anda mengacu pada operasi tertentu yang masih mengembalikan dataframe baik karena Anda hanya memiliki dataframe kolom tunggal atau karena operasi menghasilkan dataframe kolom tunggal. Namun ketika memilih satu kolom tidak ada ambiguitas dan ini terurai menjadi sebuah Seri. Anda harus menunjukkan kode sampel untuk menjelaskan masalah Anda.
Masalah utama adalah bahwa saya tidak melihat perlunya objek Series, dengan metode yang berbeda.
saroele
Untuk satu, ada perbedaan namespace. Seri hanya memiliki nama tingkat atas, kerangka data memiliki tingkat atas dan nama kolom. Itu dapat menyebabkan perbedaan signifikan dalam sintaksis untuk memproses / membuat seri baru vs kolom baru.
JohnE
4
Sejauh yang saya tahu, pertanyaan ini masih harus dijawab. Meskipun salah satu bisa memikirkan DataFramesebagai dictdari Series(meskipun itu tidak implementasi saat), itu masih belum jelas mengapa Anda akan pernah kembali sebuah Seriesobjek bukan sebuah DataFrame(yaitu konseptual dictdengan satu entry).
Struktur data tabel dua dimensi yang dapat berubah dan berpotensi heterogen dengan sumbu berlabel (baris dan kolom). Operasi aritmatika selaras pada label baris dan kolom. Dapat dianggap sebagai wadah seperti dict untuk objek Seri. Struktur data panda primer.
Jadi, Seri adalah struktur data untuk satu kolom tunggalDataFrame , tidak hanya secara konseptual, tetapi secara harfiah, yaitu data dalam a DataFramesebenarnya disimpan dalam memori sebagai kumpulan Series.
Secara analog: Kami membutuhkan daftar dan matriks, karena matriks dibuat dengan daftar. Matriks baris tunggal, sementara yang setara dengan daftar dalam fungsionalitas masih tidak dapat ada tanpa daftar yang terdiri darinya.
Keduanya memiliki API yang sangat mirip, tetapi Anda akan menemukan bahwa DataFramemetode selalu memenuhi kemungkinan Anda memiliki lebih dari satu kolom. Dan, tentu saja, Anda selalu dapat menambahkan yang lain Series(atau objek yang setara) ke DataFrame, sambil menambahkan Serieske yang lain Seriesmelibatkan pembuatan a DataFrame.
Terima kasih atas jawaban anda. Pertanyaan saya terinspirasi oleh bug dalam kode saya ketika pilihan pada kerangka data tiba-tiba mengembalikan seri dan saya tidak bisa mengakses atribut kolom. Saya bukan satu-satunya yang bingung: stackoverflow.com/questions/16782323/…
saroele
Saya melihat. Mungkin itu akan membantu jika mereka memiliki __repr__perilaku yang berbeda , sehingga Anda tidak dapat mencampuradukkannya?
PythonNut
6
Anda tidak dapat menyimpulkan apa pun tentang struktur data internal aktual dari DataFramedari Can be thought of as a dict-like container for Series objects. Bahkan, saat ini disimpan sebagai BlockManager(yang merupakan detail implementasi Anda tidak harus bergantung pada).
timdiels
1
Saya masih bingung, jadi kapan saya akan menggunakan kerangka data Kolom Tunggal alih-alih Seri?
dhiraj suvarna
4
Saya mungkin bertele-tele, tapi saya tidak melihat pertanyaan OP tentang seri MENGAPA ada dijawab. Saya melihat jawaban yang menggambarkan hubungan antara seri dan kerangka data, tetapi bukan jawaban yang menjelaskan mengapa kita ingin memiliki rangkaian sebagai tipe data terpisah sebagai lawan menjadi kasus khusus dari kerangka data (yaitu satu dengan hanya satu kolom).
Untuk membaca data di atas sebagai seri dan bingkai data:
import pandas as pd
file_data = pd.read_csv("file_path", index_col=0)
d = pd.Series(file_data.country, index=['BR','RU','IN']or index = file_data.index)
keluaran:
>>> d
BR Brazil
RU Russia
IN India
df = pd.DataFrame(file_data.area, index=['BR','RU','IN']or index = file_data.index )
jika ada yang berupaya untuk menurunkan suara, dapatkah Anda juga mencoba menyebutkan alasannya?
Umesh Kaushik
2
Saya tidak mengunduh, tetapi kode Anda tidak berfungsi. Anda mungkin ingin mengubah file_datake brics, menambahkan baris AS untuk csv, dan perubahan ['BR'....'US']ke brics.index. Mungkin benar pupuplation.
RolfBly
@RolfBly: Terima kasih telah menunjukkan kesalahan itu. Bodoh bagiku untuk membuatnya. Saya telah mengubahnya. Terima kasih! Dan mengenai membaca itu hanya contoh saya mengambil nilai acak karenanya.
Umesh Kaushik
4
Seri adalah objek satu dimensi yang dapat menampung semua tipe data seperti integer, float dan string misalnya
import pandas as pd
x = pd.Series([A,B,C])0 A
1 B
2 C
Kolom pertama dari Seri dikenal sebagai indeks yaitu 0,1,2 kolom kedua adalah data aktual Anda yaitu A, B, C
DataFrames adalah objek dua dimensi yang dapat menampung seri, daftar, kamus
Seri adalah array berlabel satu dimensi yang mampu menampung semua tipe data (bilangan bulat, string, angka floating point, objek Python, dll.). Label sumbu secara kolektif disebut sebagai indeks. Metode dasar untuk membuat Seri adalah menelepon:
s = pd.Series(data, index=index)
DataFrame adalah struktur data berlabel 2 dimensi dengan kolom dari tipe yang berpotensi berbeda. Anda bisa menganggapnya seperti spreadsheet atau tabel SQL, atau dict dari objek Series.
DataFrame
sebagaidict
dariSeries
(meskipun itu tidak implementasi saat), itu masih belum jelas mengapa Anda akan pernah kembali sebuahSeries
objek bukan sebuahDataFrame
(yaitu konseptualdict
dengan satu entry).Jawaban:
Mengutip dokumen Pandas
Jadi, Seri adalah struktur data untuk satu kolom tunggal
DataFrame
, tidak hanya secara konseptual, tetapi secara harfiah, yaitu data dalam aDataFrame
sebenarnya disimpan dalam memori sebagai kumpulanSeries
.Secara analog: Kami membutuhkan daftar dan matriks, karena matriks dibuat dengan daftar. Matriks baris tunggal, sementara yang setara dengan daftar dalam fungsionalitas masih tidak dapat ada tanpa daftar yang terdiri darinya.
Keduanya memiliki API yang sangat mirip, tetapi Anda akan menemukan bahwa
DataFrame
metode selalu memenuhi kemungkinan Anda memiliki lebih dari satu kolom. Dan, tentu saja, Anda selalu dapat menambahkan yang lainSeries
(atau objek yang setara) keDataFrame
, sambil menambahkanSeries
ke yang lainSeries
melibatkan pembuatan aDataFrame
.sumber
__repr__
perilaku yang berbeda , sehingga Anda tidak dapat mencampuradukkannya?DataFrame
dariCan be thought of as a dict-like container for Series objects
. Bahkan, saat ini disimpan sebagaiBlockManager
(yang merupakan detail implementasi Anda tidak harus bergantung pada).dari panda doc http://pandas.pydata.org/pandas-docs/stable/dsintro.html Series adalah array berlabel satu dimensi yang mampu menampung semua tipe data. Untuk membaca data dalam bentuk Seri panda:
DataFrame adalah struktur data berlabel 2 dimensi dengan kolom dari tipe yang berpotensi berbeda.
Dalam kedua indeks di atas adalah daftar
misalnya: Saya punya file csv dengan data berikut:
Untuk membaca data di atas sebagai seri dan bingkai data:
keluaran:
keluaran:
sumber
file_data
kebrics
, menambahkan baris AS untuk csv, dan perubahan['BR'....'US']
kebrics.index
. Mungkin benarpupuplation
.Seri adalah objek satu dimensi yang dapat menampung semua tipe data seperti integer, float dan string misalnya
Kolom pertama dari Seri dikenal sebagai indeks yaitu 0,1,2 kolom kedua adalah data aktual Anda yaitu A, B, C
DataFrames adalah objek dua dimensi yang dapat menampung seri, daftar, kamus
sumber
Seri adalah array berlabel satu dimensi yang mampu menampung semua tipe data (bilangan bulat, string, angka floating point, objek Python, dll.). Label sumbu secara kolektif disebut sebagai indeks. Metode dasar untuk membuat Seri adalah menelepon:
DataFrame adalah struktur data berlabel 2 dimensi dengan kolom dari tipe yang berpotensi berbeda. Anda bisa menganggapnya seperti spreadsheet atau tabel SQL, atau dict dari objek Series.
sumber
Impor data mobil
Berikut ini tampilan file cars.csv.
Cetak kolom drive_right sebagai Seri:
Versi braket tunggal memberikan Seri Pandas, versi braket ganda memberikan DataFrame Pandas.
Cetak kolom drives_right sebagai DataFrame
Menambahkan Seri ke Seri lain menciptakan DataFrame.
sumber