Python-Pandas安裝--Series結構和DataFrame結構

2021-03-02 ManEarth學習技術雜物社

機器學習中另一個非常重要的庫--Pandas庫,Pandas是對數據進行預處理和數據清洗非常重要的庫。

 

使用pandas庫相比NumPy庫有什麼好處,pandas庫比NumPy庫封裝了哪些特性

 

1. pandas會自動講數據按照自定義的方式進行對齊顯示,避免數據沒有對齊造成處理數據的時候出現失誤

 

2. pandas可以很靈活的處理缺失的數據,如果某個數據缺失,可以基於大部分數據的平均值進行填充,還可以填充想要的數值

 

3.使用pandas也可以像使用SQL語句一樣,進行相應的連結操作

 

Pandas的安裝

 

如果要使用Pandas庫,首先要進行安裝。

 

1)首先打開cmd終端,輸入pip install pandas(這樣可能會因為超時導致安裝失敗,不妨試一下pip --default-time=10000 install pandas)

2)其實中間安裝失敗很多次,我也找了其他的解決方案,如果方法一對你來說不可取,那麼就看方法二吧,百度搜索(原文地址: http://www.wsmee.com/post/6版權聲明:非商用-非衍生-保持署名)

 

Series的基本操作

 

pandas一維數組做法

 

from pandas import Series,DataFrame#Series,DataFrame兩個重要的數據結構

import pandas as pd#如果覺得名稱比較長也可以重命名,大部分機器學習pd都是使用了pandas庫

obj=Series([4,5,6,-7])print(obj)

 

單獨取出索引或者數值

 

from pandas import Series,DataFrameimport pandas as pdobj=Series([4,5,6,-7])print(obj)print(obj.index)print(obj.values)

注意:pandas的索引是可以重複的,字典是不一樣的

字典是經過哈希運算的

哈希運算:通過一個簡單的字符,經過哈希運算運算成唯一的哈希運算值

 

{』a』:1,』b』:2,』c』:3}分別映射到非常複雜的一串數值存儲到內存,新的key加入字典當中,也會先進行映射;如果與字典存儲相同的值,就會跟原有的結果覆蓋,所以字典當中的key是不可以重複的

 

可作為字典的key:int、float、string、tuple

不可作為字典的key:list、集合(Q:為什麼不可作為key?A:因為內容是可變化的,列表可以重新賦值,經過衝賦值之後,哈希運算的複雜字符串發生了相應的變化,發生變化,就沒有辦法key找到對應的值,無法進行哈希運算)

 

手工指定索引

 

from pandas import Series,DataFrameimport pandas as pdobj2=Series([4,5,6,-7],index=['a','b','c','d'])print(obj2)

按照定義的順序輸出

 

對c的索引賦值

 

from pandas import Series,DataFrameimport pandas as pdobj2=Series([4,5,6,-7],index=['a','b','c','d'])print(obj2)obj2['c']=8print(obj2)

注意

c值發生改變

 

可以把Series當作字典來用-如果在則返回true,不在返回false

from pandas import Series,DataFrameimport pandas as pdobj2=Series([4,5,6,-7],index=['a','b','c','d'])print(obj2)obj2['c']=8print(obj2)print('a' in obj2)

字典轉化為Series

 

如果數據被存儲到一個字典當中,能否很方便的轉化Series呢

from pandas import Series,DataFrameimport pandas as pdstade={'beijing':2100,'shanghai':3500,'guangzhou':9088,'xuzhou':3908}obj3=Series(stade)print(obj3)

 

字典的key作為Series的索引,字典的value作為Series的相應取值

 

索引的修改

 

from pandas import Series,DataFrameimport pandas as pdstade={'beijing':2100,'shanghai':3500,'guangzhou':9088,'xuzhou':3908}obj3=Series(stade)print(obj3)obj3.index=['bj','sh','gz','xz']print(obj3)

DateFrame的基本操作

 

DateFrame更像是電子表格一樣的形式

 

多維數據

 

Q:如何生成DateFrame?

A:一般會傳入等長的列表,或者利用NumPy的數組傳入

 

在這裡我們利用字典,等長列表的方式,創建一個DateFrame

from pandas import Series,DataFrameimport pandas as pddata={'city':['shanghai','beijing','tianjin','beijing','shanghai','xuzhou'],      'year':[2016,2017,2018,2019,2020,2021],      'pop':[1.1,1.5,2.3,3.5,2.1,5.1]}frame=DataFrame(data)print(frame)

橫坐標就是data的key,縱坐標系統自動生成的,列表會自動顯示在表格當中

可以觀察類似電子表格

 

那麼,對電子表格大家經常會有哪些操作呢?

 

按順序顯示

from pandas import Series,DataFrameimport pandas as pddata={'city':['shanghai','beijing','tianjin','beijing','shanghai','xuzhou'],      'year':[2016,2017,2018,2019,2020,2021],      'pop':[1.1,1.5,2.3,3.5,2.1,5.1]}frame=DataFrame(data)frame2=DataFrame(data,columns=['year','city','pop'])print(frame)print(frame2)

對比查看排序前和排序後的信息

 

DataFrame是二維表格,轉化一維數據

from pandas import Series,DataFrameimport pandas as pddata={'city':['shanghai','beijing','tianjin','beijing','shanghai','xuzhou'],      'year':[2016,2017,2018,2019,2020,2021],      'pop':[1.1,1.5,2.3,3.5,2.1,5.1]}frame=DataFrame(data)frame2=DataFrame(data,columns=['year','city','pop'])print(frame)print(frame2)print(frame2['city'])print(frame2.city)

 

增加新的列

 

from pandas import Series,DataFrameimport pandas as pddata={'city':['shanghai','beijing','tianjin','beijing','shanghai','xuzhou'],      'year':[2016,2017,2018,2019,2020,2021],      'pop':[1.1,1.5,2.3,3.5,2.1,5.1]}frame=DataFrame(data)frame2=DataFrame(data,columns=['year','city','pop'])frame2['new']=100print(frame2)

 

利用表格的計算生成新的列

 

--根據是否為shanghai產生的新的一列為true,否則為false

from pandas import Series,DataFrameimport pandas as pddata={'city':['shanghai','beijing','tianjin','beijing','shanghai','xuzhou'],      'year':[2016,2017,2018,2019,2020,2021],      'pop':[1.1,1.5,2.3,3.5,2.1,5.1]}frame=DataFrame(data)frame2=DataFrame(data,columns=['year','city','pop'])frame2['SH']=frame2.city=='shanghai'print(frame2)

 

字典的嵌套為DataFrame賦值

from pandas import Series,DataFrameimport pandas as pdpop={'beijing':{2008:1.5,2020:2.0},     'shanghai':{2008:2.0,2020:3.0}}frame3=DataFrame(pop)print(frame3)

行和列的互換--行列式的轉置

from pandas import Series,DataFrameimport pandas as pdpop={'beijing':{2008:1.5,2020:2.0},     'shanghai':{2008:2.0,2020:3.0}}frame3=DataFrame(pop)print(frame3)print(frame3.T)

 

DataFrame的重新索引-reindex

from pandas import Series,DataFrameimport pandas as pdobj4=Series([4,5,6,-7],index=['c','d','b','a'])obj5=obj4.reindex(['a','b','c','d','e'])print(obj5)

說明e下面的索引是不存在的

如果是空值的話可能引起數值的清洗

 

將空值進行填充

from pandas import Series,DataFrameimport pandas as pdobj4=Series([4,5,6,-7],index=['c','d','b','a'])obj5=obj4.reindex(['a','b','c','d','e'],fill_value=0)print(obj5)

 

將空值填充為相鄰的數值

from pandas import Series,DataFrameimport pandas as pdobj6=Series(['red','yellow','blue'],index=[0,2,4])print(obj6.reindex(range(6)))

from pandas import Series,DataFrameimport pandas as pdobj6=Series(['red','yellow','blue'],index=[0,2,4])print(obj6.reindex(range(6),method='ffill'))

 

將後面的值搬運到前面

print(obj6.reindex(range(6),method='bfill'))

 

Series結構缺失的數據刪除

from pandas import Series,DataFrameimport pandas as pdfrom numpy import nan as NAdata=Series([1,NA,2])print(data)print(data.dropna())

DataFrame結構缺失的數據刪除

from pandas import Series,DataFrameimport pandas as pdfrom numpy import nan as NAdata2=DataFrame([[1,1.5,4,5,-3.5],[1,NA,NA,NA,8],[NA,NA,NA,NA,2]])print(data2.dropna())

只要出現了NA都會被dropna刪除

 

刪掉全是缺失值的行,部分缺失數據的行保留

from pandas import Series,DataFrameimport pandas as pdfrom numpy import nan as NAdata2=DataFrame([[1,1.5,4,5,-3.5],[1,NA,NA,NA,8],[NA,NA,NA,NA,NA]])print(data2.dropna(how='all'))

刪除全部列是缺失數據

from pandas import Series,DataFrameimport pandas as pdfrom numpy import nan as NAdata2=DataFrame([[1,1.5,4,NA,-3.5],[1,NA,NA,NA,8],[NA,NA,NA,NA,NA]])print(data2)print(data2.dropna(axis=1,how='all'))

 

將缺失值填充為0

 

from pandas import Series,DataFrameimport pandas as pdfrom numpy import nan as NAdata2=DataFrame([[1,1.5,4,NA,-3.5],[1,NA,NA,NA,8],[NA,NA,NA,NA,NA]])print(data2)print(data2.dropna(axis=1,how='all'))data2.fillna(0)print(data2.fillna(0))

修改

from pandas import Series,DataFrameimport pandas as pdfrom numpy import nan as NAdata2=DataFrame([[1,1.5,4,NA,-3.5],[1,NA,NA,NA,8],[NA,NA,NA,NA,NA]])print(data2)print(data2.dropna(axis=1,how='all'))data2.fillna(0)print(data2.fillna(0,inplace=True))print(data2)

 

層次化索引

 

根據索引的層次提取數據

 

from pandas import Series, DataFrameimport pandas as pdimport numpy as npfrom numpy import nan as NAdata3 = Series(np.random.random(10),               index=[['q', 'w', 'e', 'r', 't', 'q', 'q', 'a', 'a', 'f'],                      [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]])print(data3)

提取a層次的索引

from pandas import Series, DataFrameimport pandas as pdimport numpy as npfrom numpy import nan as NAdata3 = Series(np.random.random(10),               index=[['q', 'w', 'e', 'r', 't', 'q', 'q', 'a', 'a', 'f'],                      [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]])print(data3)print(data3['a'])

輸入多個索引

print(data3['a':'q'])

 

Series結構和DataFrame結構如何解決對裡面的缺失數據進行刪除、填充,這就是對數據的預處理,對數據清洗非常關鍵的步驟

通過以上演示可以格式進行預處理,後面可以根據這些數據完成繪圖,進行建模。

 

 

相關焦點

  • Pandas數據結構:DataFrame
    剛剛接觸pandas的朋友,想了解數據結構,就一定要認識DataFrame,接下來給大家詳細介紹!, 18],"city": ["BeiJing", "TianJin", "ShenZhen"]}print(data)print("")frame = pd.DataFrame(data) # 創建DataFrame
  • Python數據分析 | 第五章 Pandas入門之Series和DataFrame
    5.1 pandas的數據結構介紹要使用pandas,你首先就得熟悉它的兩個主要數據結構:Series和DataFrame。雖然它們並不能解決所有問題,但它們為大多數應用提供了一種可靠的、易於使用的基礎。
  • Pandas知識點-Series數據結構介紹
    ('600519.csv', encoding='gbk')data = df['收盤價']print(data)print(type(data))數據文件是600519.csv,將此文件放到代碼同級目錄下,從文件中讀取出數據,然後取其中的一列,數據如下圖。
  • pandas:Series , Data Frame , Panel
    Zipline只理解Panel格式的數據結構。雖然在Pandas中導入.csv數據作為數據幀很容易,但在Zipline中直接導入是不可能的。然而,我們找到了解決這個問題的方法:中從Quandl讀取數據(待續)演示步驟以下分別演示這三個步驟:1、導入python中的數據我們可以使用任何方法將數據作為數據幀導入,也可以只導入數據並將其轉換為數據幀。
  • 【串講總結】array, list, tensor,Dataframe,Series之間互相轉換總結
    這些主要包括:Dataframe、Series(pandas), array(numpy), list, tensor(torch)二、定義2.1 Dataframe和Series這裡簡單介紹一下這兩個結構。
  • 什麼是Pandas的DataFrame?
    什麼是DataFrameDataFrame是一個表格型的數據結構,它含有一組有序的列,每列可以是不同的值類型(數值、字符串、布爾值等)。DataFrame既有行索引也有列索引,它可以被看做由series組成的字典(共用同一個索引)2.
  • Python:Pandas的DataFrame如何按指定list排序
    前言寫這篇文章的起由是有一天微信上一位朋友問到一個問題,問題大體意思概述如下:現在有一個pandas的Series和一個python的list,想讓Series按指定的list進行排序,如何實現?Pandas分組運算(groupby)修煉可視化Pycon 2017: Python可視化庫大全Python可視化:Seaborn庫熱力圖使用進階關於matplotlib,你要的餅圖在這裡項目實戰
  • python數據分析專題 (12):DataFrame
    DataFrame是一個表格型的數據結構,它含有一組有序的列,每列可以是不同的值類型(數值、字符串、布爾值等)。
  • pandas入門:Series、DataFrame、Index基本操作都有了!
    Series:基本數據結構,一維標籤數組,能夠保存任何數據類型DataFrame:基本數據結構,一般為二維數組,是一組有序的列Index:索引對象,負責管理軸標籤和其他元數據(比如軸名稱)groupby:分組對象,通過傳入需要分組的參數實現對數據分組
  • Python學習120課 pandas簡介kaggle下載數據及pandas讀取外部數據
    【每天幾分鐘,從零入門python編程的世界!】numpy的基本的東西我們學習差不多了,後面具體應用中遇到問題具體分析,然後去深入了解遇到的新的知識點就行。現在我們開始學習pandas,pandas一般用的更多,pandas是基於numpy去寫的。pandas是一個專門做數據結構和數據分析的庫。
  • Pandas系列 - DataFrame操作
    概覽pandas.DataFrame創建DataFrame列選擇列添加
  • Python數據分析Pandas運用 | Pandas數據結構Series and Data Frame.(8)
    上一部分介紹Pandas庫Data Frame基礎知識,現在進入Pandas數據結構,介紹pandas的DataFrame對象和Series對象
  • python數據分析萬字乾貨!一個數據集全方位解讀pandas
    說到python與數據分析,那肯定少不了pandas的身影,本文希望通過分析經典的NBA數據集來系統的全方位講解pandas包,建議搭配IDE一遍敲一邊讀哦。話不多說,開始吧!目錄安裝與數據介紹pandas數據結構訪問series元素訪問dataframe元素查詢數據集分類和匯總數據
  • 數據科學 | pandas數據導入與導出
    ● typ: 要轉換為series還是dataframe,默認為frame。當typ=frame時,orient可選split/records/index,默認為columns;當typ=series,orient可選split/records/index/columns/value,orient默認為index。
  • Pandas常用的兩種數據類型之「DataFrame」
    1.創建方式我可以使用如下的方式創建(初始化)DataFrame類型的對象(常用):•二維數組結構(列表,ndarray數組,DataFrame等)類型。•字典類型,key為列名,value為一維數組結構(列表,ndarray數組,Series等)。•如果沒有顯式指定行與列索引,則會自動生成以0開始的整數值索引。
  • paipai教你pandas(1) DataFrame的列維度操作
    paipai教你pandas教程系列的第1篇文章,DataFrame是表格型的數據類型,有列和行兩個維度,本篇教程講解pandas
  • 快速介紹Python數據分析庫pandas的基礎知識和代碼示例
    為了能夠快速查找和使用功能,使我們在進行機器學習模型時能夠達到一定流程化。我創建了這個pandas函數的備忘單。這不是一個全面的列表,但包含了我在構建機器學習模型中最常用的函數。讓我們開始吧!frame from inputted datadf = pd.DataFrame(data = {'Name': ['Bob', 'Sally', 'Scott', 'Katie'],'Physics': [68, 74, 77, 78], 'Chemistry': [84, 100, 73, 90],
  • Pandas系列 - 基本數據結構
    二、pandas.DataFrame數據幀(DataFrame)是二維數據結構,即數據以行和列的表格方式排列數據幀(DataFrame)的功能特點:構造函數:pandas.DataFrame(data,
  • Python數據分析入門日記Day6:數據分析庫Pandas:Series和Dataframe
    Python數據分析入門日記Day6——Pandas:Series和Dataframe從今天起,開始學習Python中另一個經常用到的庫——Pandas,Pandas作為數據分析庫在日常的數據分析工作中起到重要作用,是一個基於Numpy的、處理數據較為專業的庫。
  • 精心整理 | 非常全面的Pandas入門教程
    如何安裝pandas2. 如何導入pandas庫和查詢相應的版本信息3. pandas數據類型4. series教程5. dataframe教程6.小結最常用的方法是通過Anaconda安裝,在終端或命令符輸入如下命令安裝:conda install pandas若未安裝Anaconda,使用Python自帶的包管理工具pip來安裝:pip install pandasimport numpy as np # pandas和numpy常常結合在一起使用