pandas中Series和DataFrame的區別與聯系(總結)


pandas中Series和DataFrame的區別與聯系(總結)

一、總結

一句話總結:

series,只是一個一維數據結構,它由index和value組成。
dataframe,是一個二維結構,除了擁有index和value之外,還擁有column。

 

 

二、pandas中Series()和DataFrame()的區別與聯系(總結)

 

1、pandas中Series()和DataFrame()的區別與聯系

區別:
series,只是一個一維數據結構,它由index和value組成。
dataframe,是一個二維結構,除了擁有index和value之外,還擁有column。
聯系:
dataframe由多個series組成,無論是行還是列,單獨拆分出來都是一個series。

  1 import numpy as np
  2 import pandas as pd
  3 from pandas import Series, DataFrame
  4 
  5 data = {'Country':['Belgium', 'India', 'Brazil'],
  6         'Capital':['Brussels', 'New Delhi', 'Brasilia'],
  7         'Population':[11190846, 1303171035, 207847528]
  8         }
  9 
 10 # Series
 11 
 12 s1 = Series(data['Country'])
 13 print(s1)
 14 '''
 15 0    Belgium
 16 1      India
 17 2     Brazil
 18 dtype: object
 19 '''
 20 print(s1.values) # 類型: <class 'numpy.ndarray'>
 21 '''
 22 ['Belgium' 'India' 'Brazil']
 23 '''
 24 print(s1.index)
 25 '''
 26 RangeIndex(start=0, stop=3, step=1)
 27 '''
 28 
 29 # 為Series指定index
 30 s1 = Series(data['Country'], index=['A', 'B', 'C'])
 31 print(s1)
 32 ''' 索引更改
 33 A    Belgium
 34 B      India
 35 C     Brazil
 36 dtype: object
 37 '''
 38 
 39 
 40 # Dataframe
 41 
 42 df1 = pd.DataFrame(data)
 43 print(df1)
 44 '''
 45      Capital  Country  Population
 46 0   Brussels  Belgium    11190846
 47 1  New Delhi    India  1303171035
 48 2   Brasilia   Brazil   207847528
 49 '''
 50 
 51 print(df1['Capital']) # 類型: series
 52 '''
 53 0     Brussels
 54 1    New Delhi
 55 2     Brasilia
 56 Name: Capital, dtype: object
 57 '''
 58 
 59 
 60 print(df1.iterrows()) # 返回 一個 生成器 <generator object DataFrame.iterrows at 0x7f226a67b728>
 61 
 62 for row in df1.iterrows():
 63     print(row)
 64     print(row[0], row[1])
 65     print(type(row[0]), type(row[1]))
 66     break
 67 ''' 
 68 print(row) 返回了一個元組
 69 (0, Capital       Brussels
 70 Country        Belgium
 71 Population    11190846
 72 Name: 0, dtype: object)
 73 '''
 74 '''
 75 print(row[0], row[1]) 的返回值
 76 0 Capital       Brussels
 77 Country        Belgium
 78 Population    11190846
 79 Name: 0, dtype: object
 80 '''
 81 '''
 82 print(type(row[0]), type(row[1]))
 83 <class 'int'> <class 'pandas.core.series.Series'>
 84 
 85 row[1] 是一個 series,而且原來的列名,現在變成了現在的索引名,
 86 由此可見,dataframe是由多個行列交錯的series組成。
 87 '''
 88 
 89 # 現在可以 構建幾個series
 90 s1 = pd.Series(data['Country'])
 91 s2 = pd.Series(data['Capital'])
 92 s3 = pd.Series(data['Population'])
 93 df_new = pd.DataFrame([s1, s2, s3], index=['Country', 'Captital', 'Population'])
 94 print(df_new)
 95 '''
 96                    0           1          2
 97 Country      Belgium       India     Brazil
 98 Captital    Brussels   New Delhi   Brasilia
 99 Population  11190846  1303171035  207847528
100 
101 可以看到,行 和 列 都是顛倒的,因此需要進行一下轉置
102 '''
103 
104 print(df_new.T)
105 '''
106    Country   Captital  Population
107 0  Belgium   Brussels    11190846
108 1    India  New Delhi  1303171035
109 2   Brazil   Brasilia   207847528
110 
111 '''
112 
113 '''
114 總結:
115     series, 就是一個 一維 的數據結構,它是由 index 和 value 組成。
116     dataframe, 是一個 二維 數據結構,它由多個 series 構成。
117 '''

 

 

2、結合圖更加直觀 的理解

 

 series結構有索引,和列名組成,如果沒有,那么程序會自動賦名為None

series的索引名具有唯一性,索引可以數字和字符,系統會自動將他們轉化為一個類型object。

 

 

 

 

 

 dataframe由索引和列名組成,索引不具有唯一性,列名也不具有唯一性

 

 

參考:

pandas中series和dataframe之間的區別 - 月下林白 - 博客園
https://www.cnblogs.com/shadow1/p/10235543.html

pandas中Series()和DataFrame()的區別與聯系
https://blog.csdn.net/missyougoon/article/details/83301712
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM