Anda menulis di komentar untuk jawaban joris:
"Saya tidak mengerti keputusan desain untuk baris tunggal untuk diubah menjadi seri - mengapa tidak bingkai data dengan satu baris?"
Satu baris tidak diubah menjadi Seri.
Ini ADALAH Seri:No, I don't think so, in fact; see the edit
Cara terbaik untuk memikirkan struktur data panda adalah sebagai wadah fleksibel untuk data berdimensi lebih rendah. Misalnya, DataFrame adalah wadah untuk Seri, dan Panel adalah wadah untuk objek DataFrame. Kami ingin dapat menyisipkan dan menghapus objek dari kontainer ini dengan cara seperti kamus.
http://pandas.pydata.org/pandas-docs/stable/overview.html#why-more-than-1-data-structure
Model data objek Pandas telah dipilih seperti itu. Alasannya pasti terletak pada fakta bahwa itu memastikan beberapa keuntungan yang saya tidak tahu (saya tidak sepenuhnya memahami kalimat terakhir dari kutipan, mungkin itu alasannya)
.
Edit: Saya tidak setuju dengan saya
DataFrame tidak dapat terdiri dari elemen yang akan menjadi Seri, karena kode berikut memberikan jenis "Seri" yang sama juga untuk baris seperti untuk kolom:
import pandas as pd
df = pd.DataFrame(data=[11,12,13], index=[2, 3, 3])
print '-------- df -------------'
print df
print '\n------- df.loc[2] --------'
print df.loc[2]
print 'type(df.loc[1]) : ',type(df.loc[2])
print '\n--------- df[0] ----------'
print df[0]
print 'type(df[0]) : ',type(df[0])
hasil
-------- df -------------
0
2 11
3 12
3 13
------- df.loc[2] --------
0 11
Name: 2, dtype: int64
type(df.loc[1]) : <class 'pandas.core.series.Series'>
--------- df[0] ----------
2 11
3 12
3 13
Name: 0, dtype: int64
type(df[0]) : <class 'pandas.core.series.Series'>
Jadi, tidak masuk akal untuk berpura-pura bahwa DataFrame terdiri dari Seri karena Seri seperti apa yang seharusnya: kolom atau baris? Pertanyaan dan visi bodoh.
.
Lalu apa itu DataFrame?
Pada jawaban versi sebelumnya saya mengajukan pertanyaan ini, mencoba mencari jawaban atas Why is that?
bagian pertanyaan OP dan interogasi serupa single rows to get converted into a series - why not a data frame with one row?
di salah satu komentarnya,
sedangkan Is there a way to ensure I always get back a data frame?
bagian tersebut telah dijawab oleh Dan Allan.
Kemudian, seperti yang dikatakan oleh dokumen Pandas di atas bahwa struktur data panda paling baik dilihat sebagai wadah data dimensi yang lebih rendah, bagi saya tampaknya pemahaman tentang mengapa dapat ditemukan dalam karakteristik sifat struktur DataFrame.
Namun, saya menyadari bahwa saran yang dikutip ini tidak boleh dianggap sebagai deskripsi yang tepat tentang sifat struktur data Pandas.
Saran ini tidak berarti bahwa DataFrame adalah wadah Seri.
Ini mengungkapkan bahwa representasi mental dari DataFrame sebagai wadah Seri (baik baris atau kolom sesuai dengan opsi yang dipertimbangkan pada satu momen penalaran) adalah cara yang baik untuk mempertimbangkan DataFrames, meskipun sebenarnya tidak benar-benar terjadi. "Baik" artinya visi ini memungkinkan penggunaan DataFrames dengan efisiensi. Itu saja.
.
Lalu apa itu objek DataFrame?
Kelas DataFrame menghasilkan instance yang memiliki struktur tertentu yang berasal dari kelas dasar NDFrame , yang berasal dari kelas dasar PandasContainer yang juga merupakan kelas induk dari kelas Seri .
Perhatikan bahwa ini benar untuk Pandas hingga versi 0.12. Pada versi 0.13 mendatang, Seri juga akan diturunkan dari kelas NDFrame saja.
from pandas import Series
print 'Series :\n',Series
print 'Series.__bases__ :\n',Series.__bases__
from pandas import DataFrame
print '\nDataFrame :\n',DataFrame
print 'DataFrame.__bases__ :\n',DataFrame.__bases__
print '\n-------------------'
from pandas.core.generic import NDFrame
print '\nNDFrame.__bases__ :\n',NDFrame.__bases__
from pandas.core.generic import PandasContainer
print '\nPandasContainer.__bases__ :\n',PandasContainer.__bases__
from pandas.core.base import PandasObject
print '\nPandasObject.__bases__ :\n',PandasObject.__bases__
from pandas.core.base import StringMixin
print '\nStringMixin.__bases__ :\n',StringMixin.__bases__
hasil
Series :
<class 'pandas.core.series.Series'>
Series.__bases__ :
(<class 'pandas.core.generic.PandasContainer'>, <type 'numpy.ndarray'>)
DataFrame :
<class 'pandas.core.frame.DataFrame'>
DataFrame.__bases__ :
(<class 'pandas.core.generic.NDFrame'>,)
-------------------
NDFrame.__bases__ :
(<class 'pandas.core.generic.PandasContainer'>,)
PandasContainer.__bases__ :
(<class 'pandas.core.base.PandasObject'>,)
PandasObject.__bases__ :
(<class 'pandas.core.base.StringMixin'>,)
StringMixin.__bases__ :
(<type 'object'>,)
Jadi pemahaman saya sekarang adalah contoh DataFrame memiliki metode tertentu yang telah dibuat untuk mengontrol cara data diekstraksi dari baris dan kolom.
Cara kerja metode ekstraksi ini dijelaskan di halaman ini:
http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing
Kami menemukan di dalamnya metode yang diberikan oleh Dan Allan dan metode lainnya.
Mengapa metode ekstraksi ini dibuat sebagaimana mestinya?
Hal itu tentunya karena mereka dinilai sebagai yang memberikan kemungkinan dan kemudahan yang lebih baik dalam analisis data.
Persis apa yang diungkapkan dalam kalimat ini:
Cara terbaik untuk memikirkan struktur data panda adalah sebagai wadah fleksibel untuk data berdimensi lebih rendah.
The mengapa dari ekstraksi data dari contoh DataFRame tidak terletak pada struktur, itu terletak pada mengapa struktur ini. Saya kira bahwa struktur dan fungsi struktur data Panda telah dipahat agar sedapat mungkin intuitif secara intelektual, dan untuk memahami detailnya, seseorang harus membaca blog Wes McKinney.