pythonforpandas
A. python使用pandas後如何利用DataFrame拆分列
#有很多種方法,假如你的date是string類型
list_temp=[]
fori,jinenumerate(df['date']):
list_temp=j.split('/')
df.loc[i,'year']=list_temp[0]
df.loc[i,'month']=list_temp[1]
df.loc[i,'day']=list_temp[2]
df.drop('date',axis=1)
#如果你的date是datetime類型,python有專門的方法拆分,你可以查一查
B. 新手關於python中pandas函數的使用
利用Python的pandas數據結構來讀取excel表格的數據,部分代碼如下:
#-*- coding:utf-8 -*-
import pandas as pd
import matplotlib.pyplot as plt
catering_data="catering_sale.xls"
data=pd.read_excel(catering_data,index_col=u'日期')
#讀取數據,指定"日期"列為索引列
大多數書上都是這樣寫的,但是在Python2.7上運行時出現錯誤。(沒有在Python3.x版本試過)
出現了如下問題:
這里寫圖片描述
使用help(pd.read_excel)發現參數中有必選參數sheetname,加入到函數中,代碼如下:
#-*- coding:utf-8 -*-
import pandas as pd
import matplotlib.pyplot as plt
catering_data="catering_sale.xls"
data=pd.read_excel(catering_data,sheetname=0,index_col=u'日期')
運行成功。
sheetname=0 的意思是:讀取xls文件中的第一個表格。(假設文件中有很多個表格)
另外,也可以將文件轉換成csv格式,就不需要這個參數了。代碼如下:
catering_data="catering_sale.csv"
data=pd.read_csv(catering_data)
C. python(pandas模塊)
Pandas是Python的一個數據分析包,最初由AQR Capital
Management於2008年4月開發,並於2009年底開源出來,目前由專注於Python數據包開發的Pydata開發team繼續開發和維護,屬於PyData項目的一部分,pandas最初被作為金融數據分析工具而開發出來,因此pandas為時間序列分析提供了很好的支持。
Pandas的名稱來自於面板數據和python數據分析。panel
data是經濟學中關於多維數據集的一個術語,在Pandas中也提供了panel的數據類型。
Pandas數據結構:
Series:一維數組,與numpy中的一維array類似。二者與Python基本的數據結構list相近,Series如今能保存不同種數據類型,字元串、boolean值、數字等都能保存在series中。
Time-series:以時間為索引的series。
DataFrame:二維的表格型數據結構,很多功能與R中的data.frame類似,可以將DataFrame理解為Series的容器。
Panel :三維的數組,可以理解為DataFrame的容器。
Panel4D:是像Panel一樣的4維數據容器。
PanelND:擁有factory集合,可以創建像Panel4D一樣N維命名容器的模塊。
D. 如何利用Python中的Pandas庫繪制柱形圖
我們利用Python的Pandas庫可以繪制很多圖形,那麼如何繪制柱形圖呢?下面我給大家分享演示一下。
工具/材料
Pycharm
- 01
首先我們打開Excel文件,准備要生成柱形圖的數據表,如下圖所示
- 02
接下來在Python文件中導入pandas庫,然後將Excel文件載入到緩存對象中,如下圖所示
- 03
然後我們導入matplotlib下面的pyplot庫,如下圖所示,導入以後給它起一個別名
- 04
接下來我們通過pandas庫下面的bar來設置柱形圖的X,Y坐標軸,如下圖所示
- 05
然後通過pyplot的show方法將柱形圖進行展示出來,如下圖所示
- 06
接下來運行程序以後我們就看到柱形圖生成出來了,如下圖所示
- 07
然後如果我們想將柱形圖中的數據排序的話可以利用sort_values實現,如下圖所示
- 08
最後運行排序好後的程序,我們就可以看到柱形圖中的數據已經排序好了,如下圖所示
E. python pandas 高效的分析兩列數據,並生成結果到三列。
首先,為了以後在處理大量數據的效率,一定要養成【不】使用循環的方式處理pandas或者numpy數據的習慣, 最好使用包內置的方法或者被重載過的通用方法來實現。以前剛接觸pandas的時候,處理10W+的是數據的時候,用循環處理,等了半天都沒有結果。
對於你的代碼,發現雖然有if了, 但卻沒有else哈,也就是說你只考慮到匹配的情況下的邏輯, 但對於沒匹配的處理卻沒有寫出來。
F. Python pandas用法
在Python中,pandas是基於NumPy數組構建的,使數據預處理、清洗、分析工作變得更快更簡單。pandas是專門為處理表格和混雜數據設計的,而NumPy更適合處理統一的數值數組數據。
使用下面格式約定,引入pandas包:
pandas有兩個主要數據結構:Series和DataFrame。
Series是一種類似於一維數組的對象,它由 一組數據 (各種NumPy數據類型)以及一組與之相關的 數據標簽(即索引) 組成,即index和values兩部分,可以通過索引的方式選取Series中的單個或一組值。
pd.Series(list,index=[ ]) ,第二個參數是Series中數據的索引,可以省略。
Series類型索引、切片、運算的操作類似於ndarray,同樣的類似Python字典類型的操作,包括保留字in操作、使用.get()方法。
Series和ndarray之間的主要區別在於Series之間的操作會根據索引自動對齊數據。
DataFrame是一個表格型的數據類型,每列值類型可以不同,是最常用的pandas對象。DataFrame既有行索引也有列索引,它可以被看做由Series組成的字典(共用同一個索引)。DataFrame中的數據是以一個或多個二維塊存放的(而不是列表、字典或別的一維數據結構)。
pd.DataFrame(data,columns = [ ],index = [ ]) :columns和index為指定的列、行索引,並按照順序排列。
如果創建時指定了columns和index索引,則按照索引順序排列,並且如果傳入的列在數據中找不到,就會在結果中產生缺失值:
數據索引 :Series和DataFrame的索引是Index類型,Index對象是不可修改,可通過索引值或索引標簽獲取目標數據,也可通過索引使序列或數據框的計算、操作實現自動化對齊。索引類型index的常用方法:
重新索引 :能夠改變、重排Series和DataFrame索引,會創建一個新對象,如果某個索引值當前不存在,就引入缺失值。
df.reindex(index, columns ,fill_value, method, limit, ) :index/columns為新的行列自定義索引;fill_value為用於填充缺失位置的值;method為填充方法,ffill當前值向前填充,bfill向後填充;limit為最大填充量; 默認True,生成新的對象,False時,新舊相等不復制。
刪除指定索引 :默認返回的是一個新對象。
.drop() :能夠刪除Series和DataFrame指定行或列索引。
刪除一行或者一列時,用單引號指定索引,刪除多行時用列表指定索引。
如果刪除的是列索引,需要增加axis=1或axis='columns'作為參數。
增加inplace=True作為參數,可以就地修改對象,不會返回新的對象。
在pandas中,有多個方法可以選取和重新組合數據。對於DataFrame,表5-4進行了總結
適用於Series和DataFrame的基本統計分析函數 :傳入axis='columns'或axis=1將會按行進行運算。
.describe() :針對各列的多個統計匯總,用統計學指標快速描述數據的概要。
.sum() :計算各列數據的和
.count() :非NaN值的數量
.mean( )/.median() :計算數據的算術平均值、算術中位數
.var()/.std() :計算數據的方差、標准差
.corr()/.cov() :計算相關系數矩陣、協方差矩陣,是通過參數對計算出來的。Series的corr方法用於計算兩個Series中重疊的、非NA的、按索引對齊的值的相關系數。DataFrame的corr和cov方法將以DataFrame的形式分別返回完整的相關系數或協方差矩陣。
.corrwith() :利用DataFrame的corrwith方法,可以計算其列或行跟另一個Series或DataFrame之間的相關系數。傳入一個Series將會返回一個相關系數值Series(針對各列進行計算),傳入一個DataFrame則會計算按列名配對的相關系數。
.min()/.max() :計算數據的最小值、最大值
.diff() :計算一階差分,對時間序列很有效
.mode() :計算眾數,返回頻數最高的那(幾)個
.mean() :計算均值
.quantile() :計算分位數(0到1)
.isin() :用於判斷矢量化集合的成員資格,可用於過濾Series中或DataFrame列中數據的子集
適用於Series的基本統計分析函數,DataFrame[列名]返回的是一個Series類型。
.unique() :返回一個Series中的唯一值組成的數組。
.value_counts() :計算一個Series中各值出現的頻率。
.argmin()/.argmax() :計算數據最大值、最小值所在位置的索引位置(自動索引)
.idxmin()/.idxmax() :計算數據最大值、最小值所在位置的索引(自定義索引)
pandas提供了一些用於將表格型數據讀取為DataFrame對象的函數。下表對它們進行了總結,其中read_csv()、read_table()、to_csv()是用得最多的。
在數據分析和建模的過程中,相當多的時間要用在數據准備上:載入、清理、轉換以及重塑。
在許多數據分析工作中,缺失數據是經常發生的。對於數值數據,pandas使用浮點值NaN(np.nan)表示缺失數據,也可將缺失值表示為NA(Python內置的None值)。
替換值
.replace(old, new) :用新的數據替換老的數據,如果希望一次性替換多個值,old和new可以是列表。默認會返回一個新的對象,傳入inplace=True可以對現有對象進行就地修改。
刪除重復數據
利用函數或字典進行數據轉換
df.head():查詢數據的前五行
df.tail():查詢數據的末尾5行
pandas.cut()
pandas.qcut() 基於分位數的離散化函數。基於秩或基於樣本分位數將變數離散化為等大小桶。
pandas.date_range() 返回一個時間索引
df.apply() 沿相應軸應用函數
Series.value_counts() 返回不同數據的計數值
df.aggregate()
df.reset_index() 重新設置index,參數drop = True時會丟棄原來的索引,設置新的從0開始的索引。常與groupby()一起用
numpy.zeros()
G. Python+Pandas入門2——導出csv
1、to_csv()
1、path_or_buf =None: string or file handle, default None
File path or object, if None is provided the result is returned as a string.
字元串或文件句柄,默認無文件
路徑或對象,如果沒有提供,結果將返回為字元串。
2、sep : character, default 『,』
Field delimiter for the output file.
默認字元 『 ,』
輸出文件的欄位分隔符。
3、na_rep : string, default 『』
Missing data representation
字元串,默認為 『』
浮點數格式字元串
4、float_format : string, default None
Format string for floating point numbers
字元串,默認為 None
浮點數格式字元串
5、columns : sequence, optional Columns to write
順序,可選列寫入
6、header : boolean or list of string, default True
Write out the column names. If a list of strings is given it is assumed to be aliases for the column names
字元串或布爾列表,默認為true
寫出列名。如果給定字元串列表,則假定為列名的別名。
7、index : boolean, default True
Write row names (index)
布爾值,默認為Ture
寫入行名稱(索引)
8、index_label : string or sequence, or False, default None
*Column label for index column(s) if desired. If None is given, and header and index are True, then the index names are used. A sequence should be given if the DataFrame uses MultiIndex. If False do not print fields for index names. Use index_label=False for easier importing in R
字元串或序列,或False,默認為None
如果需要,可以使用索引列的列標簽。如果沒有給出,且標題和索引為True,則使用索引名稱。如果數據文件使用多索引,則應該使用這個序列。如果值為False,不列印索引欄位。在R中使用 index_label=False 更容易導入索引.
9、encoding : string, optional
編碼:字元串,可選
表示在輸出文件中使用的編碼的字元串,Python 2上默認為「ASCII」和Python 3上默認為「UTF-8」。
10、compression : string, optional
字元串,可選項
表示在輸出文件中使用的壓縮的字元串,允許值為「gzip」、「bz2」、「xz」,僅在第一個參數是文件名時使用。
11、line_terminator : string, default 『
』
字元串,默認為 『
』
在輸出文件中使用的換行字元或字元序列
12、quoting : optional constant from csv mole
*CSV模塊的可選常量
輸出是否用引號,默認參數值為0,表示不加雙引號,參數值為1,則每個欄位都會加上引號,數值也會被當作字元串看待
13、quotechar : string (length 1), default 『」』
*字元串(長度1),默認"
當quoting=1可以指定引號字元為雙引號"或單引號'
14、doublequote : boolean, default True
布爾,默認為Ture
控制一個欄位內的quotechar
15、escapechar : string (length 1), default None
字元串(長度為1),默認為None
在適當的時候用來轉義sep和quotechar的字元
16、chunksize : int or None
int或None
一次寫入行
17、tupleize_cols : boolean, default False
布爾值 ,默認為False
從版本0.21.0中刪除:此參數將被刪除,並且總是將多索引的每行寫入CSV文件中的單獨行
(如果值為false)將多索引列作為元組列表(如果TRUE)或以新的、擴展的格式寫入,其中每個多索引列是CSV中的一行。
18、date_format : string, default None
字元串,默認為None
字元串對象轉換為日期時間對象
19、decimal : string, default 『.』
字元串,默認』。』
字元識別為小數點分隔符。例如。歐洲數據使用 』,』
20、mode : str
模式:值為『str』,字元串
Python寫模式,默認「w」
H. 如何安裝python pandas
1、首先去官網下載一個indivial edition個人版安裝文件。anaconda
2、安裝anaconda3,以下過程中勾選兩項並安裝直到完成:
3、配置默認保存目錄
在cmd下,首先輸入jupyter notebook –generate-config,此命令會在C:UsersAdministrator.jupyter目錄下生產一個jupyter_notebook_config.py文件,打開此文件,找到#c.NotebookApp.notebook_dir=』』改為自己要保存文件的目錄,並將前面的#去掉。
在cmd中運行jupyter notebook,會在瀏覽器中顯示jupyter的界面,瀏覽器中地址是:http://localhost:8888/tree
I. python pandas怎麼輸出結果
本文是對pandas官方網站上《10 Minutes to pandas》的一個簡單的翻譯,原文在這里。這篇文章是對pandas的一個簡單的介紹,詳細的介紹請參考:Cookbook 。習慣上,我們會按下面格式引入所需要的包:
一、 創建對象
可以通過 Data Structure Intro Setion 來查看有關該節內容的詳細信息。
1、可以通過傳遞一個list對象來創建一個Series,pandas會默認創建整型索引:
2、通過傳遞一個numpy array,時間索引以及列標簽來創建一個DataFrame:
3、通過傳遞一個能夠被轉換成類似序列結構的字典對象來創建一個DataFrame:
4、查看不同列的數據類型:
5、如果你使用的是IPython,使用Tab自動補全功能會自動識別所有的屬性以及自定義的列,下圖中是所有能夠被自動識別的屬性的一個子集:
二、 查看數據
詳情請參閱:Basics Section
1、 查看frame中頭部和尾部的行:
2、 顯示索引、列和底層的numpy數據:
3、 describe()函數對於數據的快速統計匯總:
4、 對數據的轉置:
5、 按軸進行排序
6、 按值進行排序
三、 選擇
雖然標準的Python/Numpy的選擇和設置表達式都能夠直接派上用場,但是作為工程使用的代碼,我們推薦使用經過優化的pandas數據訪問方式: .at, .iat, .loc, .iloc 和 .ix詳情請參閱Indexing and Selecing Data 和 MultiIndex / Advanced Indexing。
l 獲取
1、 選擇一個單獨的列,這將會返回一個Series,等同於df.A:
2、 通過[]進行選擇,這將會對行進行切片
l 通過標簽選擇
1、 使用標簽來獲取一個交叉的區域
2、 通過標簽來在多個軸上進行選擇
3、 標簽切片
4、 對於返回的對象進行維度縮減
5、 獲取一個標量
6、 快速訪問一個標量(與上一個方法等價)
l 通過位置選擇
1、 通過傳遞數值進行位置選擇(選擇的是行)
2、 通過數值進行切片,與numpy/python中的情況類似
3、 通過指定一個位置的列表,與numpy/python中的情況類似
4、 對行進行切片
5、 對列進行切片
6、 獲取特定的值
l 布爾索引
1、 使用一個單獨列的值來選擇數據:
2、 使用where操作來選擇數據:
3、 使用isin()方法來過濾:
l 設置
1、 設置一個新的列:
2、 通過標簽設置新的值:
3、 通過位置設置新的值:
4、 通過一個numpy數組設置一組新值:
上述操作結果如下:
5、 通過where操作來設置新的值:
四、 缺失值處理
在pandas中,使用np.nan來代替缺失值,這些值將默認不會包含在計算中,詳情請參閱:Missing Data Section。
1、 reindex()方法可以對指定軸上的索引進行改變/增加/刪除操作,這將返回原始數據的一個拷貝:、
2、 去掉包含缺失值的行:
3、 對缺失值進行填充:
4、 對數據進行布爾填充:
五、 相關操作
詳情請參與 Basic Section On Binary Ops
統計(相關操作通常情況下不包括缺失值)
1、 執行描述性統計:
2、 在其他軸上進行相同的操作:
3、 對於擁有不同維度,需要對齊的對象進行操作。Pandas會自動的沿著指定的維度進行廣播:
Apply
1、 對數據應用函數:
直方圖
具體請參照:Histogramming and Discretization
字元串方法
Series對象在其str屬性中配備了一組字元串處理方法,可以很容易的應用到數組中的每個元素,如下段代碼所示。更多詳情請參考:Vectorized String Methods.
六、 合並
Pandas提供了大量的方法能夠輕松的對Series,DataFrame和Panel對象進行各種符合各種邏輯關系的合並操作。具體請參閱:Merging section
Concat
Join 類似於SQL類型的合並,具體請參閱:Database style joining
Append 將一行連接到一個DataFrame上,具體請參閱Appending:
七、 分組
對於」group by」操作,我們通常是指以下一個或多個操作步驟:
(Splitting)按照一些規則將數據分為不同的組;
(Applying)對於每組數據分別執行一個函數;
(Combining)將結果組合到一個數據結構中;
詳情請參閱:Grouping section
1、 分組並對每個分組執行sum函數:
2、 通過多個列進行分組形成一個層次索引,然後執行函數:
八、 Reshaping
詳情請參閱 Hierarchical Indexing 和 Reshaping。
Stack
數據透視表,詳情請參閱:Pivot Tables.
可以從這個數據中輕松的生成數據透視表:
九、 時間序列
Pandas在對頻率轉換進行重新采樣時擁有簡單、強大且高效的功能(如將按秒采樣的數據轉換為按5分鍾為單位進行采樣的數據)。這種操作在金融領域非常常見。具體參考:Time Series section。
1、 時區表示:
2、 時區轉換:
3、 時間跨度轉換:
4、 時期和時間戳之間的轉換使得可以使用一些方便的算術函數。
十、 Categorical
從0.15版本開始,pandas可以在DataFrame中支持Categorical類型的數據,詳細 介紹參看:categorical introction和API documentation。
1、 將原始的grade轉換為Categorical數據類型:
2、 將Categorical類型數據重命名為更有意義的名稱:
3、 對類別進行重新排序,增加缺失的類別:
4、 排序是按照Categorical的順序進行的而不是按照字典順序進行:
5、 對Categorical列進行排序時存在空的類別:
十一、 畫圖
具體文檔參看:Plotting docs
對於DataFrame來說,plot是一種將所有列及其標簽進行繪制的簡便方法:
十二、 導入和保存數據
CSV,參考:Writing to a csv file
1、 寫入csv文件:
2、 從csv文件中讀取:
HDF5,參考:HDFStores
1、 寫入HDF5存儲:
2、 從HDF5存儲中讀取:
Excel,參考:MS Excel
1、 寫入excel文件:
2、 從excel文件中讀取:
來自為知筆記(Wiz)
J. python(pandas模塊)
1.什麼是pandas? numpy模塊和pandas模塊都是用於處理數據的模塊。 numpy主要用於針對數組進行統計計算,處理數字數據比較方便。 pandas除了可以處理數字數據,還可...