Python數(shù)據(jù)分析庫(kù)pandas基本操作方法
pandas是什么?

是它嗎?
。。。。很顯然pandas沒有這個(gè)家伙那么可愛。。。。
我們來看看pandas的官網(wǎng)是怎么來定義自己的:
pandas is an open source, easy-to-use data structures and data analysis tools for the Python programming language.
很顯然,pandas是python的一個(gè)非常強(qiáng)大的數(shù)據(jù)分析庫(kù)!
讓我們來學(xué)習(xí)一下它吧!
1.pandas序列
import numpy as np import pandas as pd s_data = pd.Series([1,3,5,7,np.NaN,9,11])#pandas中生產(chǎn)序列的函數(shù),類似于我們平時(shí)說的數(shù)組 print s_data

2.pandas數(shù)據(jù)結(jié)構(gòu)DataFrame
import numpy as np
import pandas as pd
#以20170220為基點(diǎn)向后生產(chǎn)時(shí)間點(diǎn)
dates = pd.date_range('20170220',periods=6)
#DataFrame生成函數(shù),行索引為時(shí)間點(diǎn),列索引為ABCD
data = pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('ABCD'))
print data
print
print data.shape
print
print data.values

3.DataFrame的一些操作(1)
import numpy as np
import pandas as pd
#設(shè)計(jì)一個(gè)字典
d_data = {'A':1,'B':pd.Timestamp('20170220'),'C':range(4),'D':np.arange(4)}
print d_data
#使用字典生成一個(gè)DataFrame
df_data = pd.DataFrame(d_data)
print df_data
#DataFrame中每一列的類型
print df_data.dtypes
#打印A列
print df_data.A
#打印B列
print df_data.B
#B列的類型
print type(df_data.B)

4.DataFrame的一些操作(2)
import numpy as np
import pandas as pd
dates = pd.date_range('20170220',periods=6)
data = pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('ABCD'))
print data
print
#輸出DataFrame頭部數(shù)據(jù),默認(rèn)為前5行
print data.head()
#輸出輸出DataFrame第一行數(shù)據(jù)
print data.head(1)
#輸出DataFrame尾部數(shù)據(jù),默認(rèn)為后5行
print data.tail()
#輸出輸出DataFrame最后一行數(shù)據(jù)
print data.tail(1)
#輸出行索引
print data.index
#輸出列索引
print data.columns
#輸出DataFrame數(shù)據(jù)值
print data.values
#輸出DataFrame詳細(xì)信息
print data.describe()

5.DataFrame的一些操作(3)
import numpy as np
import pandas as pd
dates = pd.date_range('20170220',periods=6)
data = pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('ABCD'))
print data
print
#轉(zhuǎn)置
print data.T
#輸出維度信息
print data.shape
#轉(zhuǎn)置后的維度信息
print data.T.shape
#將列索引排序
print data.sort_index(axis = 1)
#將列索引排序,降序排列
print data.sort_index(axis = 1,ascending=False)
#將行索引排序,降序排列
print data.sort_index(axis = 0,ascending=False)
#按照A列的值進(jìn)行升序排列
print data.sort_values(by='A')

6.DataFrame的一些操作(4)
import numpy as np
import pandas as pd
dates = pd.date_range('20170220',periods=6)
data = pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('ABCD'))
print data
#輸出A列
print data.A
#輸出A列
print data['A']
#輸出3,4行
print data[2:4]
#輸出3,4行
print data['20170222':'20170223']
#輸出3,4行
print data.loc['20170222':'20170223']
#輸出3,4行
print data.iloc[2:4]
輸出B,C兩列
print data.loc[:,['B','C']]

7.DataFrame的一些操作(5)
import numpy as np
import pandas as pd
dates = pd.date_range('20170220',periods=6)
data = pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('ABCD'))
print data
#輸出A列中大于0的行
print data[data.A > 0]
#輸出大于0的數(shù)據(jù),小于等于0的用NaN補(bǔ)位
print data[data > 0]
#拷貝data
data2 = data.copy()
print data2
tag = ['a'] * 2 + ['b'] * 2 + ['c'] * 2
#在data2中增加TAG列用tag賦值
data2['TAG'] = tag
print data2
#打印TAG列中為a,c的行
print data2[data2.TAG.isin(['a','c'])]

8.DataFrame的一些操作(6)
import numpy as np
import pandas as pd
dates = pd.date_range('20170220',periods=6)
data = pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('ABCD'))
print data
#將第一行第一列元素賦值為100
data.iat[0,0] = 100
print data
#將A列元素用range(6)賦值
data.A = range(6)
print data
#將B列元素賦值為200
data.B = 200
print data
#將3,4列元素賦值為1000
data.iloc[:,2:5] = 1000
print data

9.DataFrame的一些操作(7)
import numpy as np
import pandas as pd
dates = pd.date_range('20170220',periods = 6)
df = pd.DataFrame(np.random.randn(6,4) , index = dates , columns = list('ABCD'))
print df
#重定義索引,并添加E列
dfl = df.reindex(index = dates[0:4],columns = list(df.columns)+['E'])
print dfl
#將E列中的2,3行賦值為2
dfl.loc[dates[1:3],'E'] = 2
print dfl
#去掉存在NaN元素的行
print dfl.dropna()
#將NaN元素賦值為5
print dfl.fillna(5)
#判斷每個(gè)元素是否為NaN
print pd.isnull(dfl)
#求列平均值
print dfl.mean()
#對(duì)每列進(jìn)行累加
print dfl.cumsum()

10.DataFrame的一些操作(8)
import numpy as np
import pandas as pd
dates = pd.date_range('20170220',periods = 6)
df = pd.DataFrame(np.random.randn(6,4) , index = dates , columns = list('ABCD'))
print df
dfl = df.reindex(index = dates[0:4],columns = list(df.columns)+['E'])
print dfl
#針對(duì)行求平均值
print dfl.mean(axis=1)
#生成序列并向右平移兩位
s = pd.Series([1,3,5,np.nan,6,8],index = dates).shift(2)
print s
#df與s做減法運(yùn)算
print df.sub(s,axis = 'index')
#每列進(jìn)行累加運(yùn)算
print df.apply(np.cumsum)
#每列的最大值減去最小值
print df.apply(lambda x: x.max() - x.min())

11.DataFrame的一些操作(9)
import numpy as np
import pandas as pd
dates = pd.date_range('20170220',periods = 6)
df = pd.DataFrame(np.random.randn(6,4) , index = dates , columns = list('ABCD'))
print df
#定義一個(gè)函數(shù)
def _sum(x):
print(type(x))
return x.sum()
#apply函數(shù)可以接受一個(gè)函數(shù)作為參數(shù)
print df.apply(_sum)
s = pd.Series(np.random.randint(10,20,size = 15))
print s
#統(tǒng)計(jì)序列中每個(gè)元素出現(xiàn)的次數(shù)
print s.value_counts()
#返回出現(xiàn)次數(shù)最多的元素
print s.mode()

12.DataFrame的一些操作(10)
import numpy as np
import pandas as pd
df = pd.DataFrame(np.random.randn(10,4) , columns = list('ABCD'))
print df
#合并函數(shù)
dfl = pd.concat([df.iloc[:3],df.iloc[3:7],df.iloc[7:]])
print dfl
#判斷兩個(gè)DataFrame中元素是否相等
print df == dfl

13.DataFrame的一些操作(11)
import numpy as np
import pandas as pd
df = pd.DataFrame(np.random.randn(10,4) , columns = list('ABCD'))
print df
left = pd.DataFrame({'key':['foo','foo'],'lval':[1,2]})
right = pd.DataFrame({'key':['foo','foo'],'rval':[4,5]})
print left
print right
#通過key來合并數(shù)據(jù)
print pd.merge(left,right,on='key')
s = pd.Series(np.random.randint(1,5,size = 4),index = list('ABCD'))
print s
#通過序列添加一行
print df.append(s,ignore_index = True)

14.DataFrame的一些操作(12)
import numpy as np
import pandas as pd
df = pd.DataFrame({'A': ['foo','bar','foo','bar',
'foo','bar','foo','bar'],
'B': ['one','one','two','three',
'two','two','one','three'],
'C': np.random.randn(8),
'D': np.random.randn(8)})
print df
print
#根據(jù)A列的索引求和
print df.groupby('A').sum()
print
#先根據(jù)A列的索引,在根據(jù)B列的索引求和
print df.groupby(['A','B']).sum()
print
#先根據(jù)B列的索引,在根據(jù)A列的索引求和
print df.groupby(['B','A']).sum()

15.DataFrame的一些操作(13)
import pandas as pd
import numpy as np
#zip函數(shù)可以打包成一個(gè)個(gè)tuple
tuples = list(zip(*[['bar', 'bar', 'baz', 'baz',
'foo', 'foo', 'qux', 'qux'],
['one', 'two', 'one', 'two',
'one', 'two', 'one', 'two']]))
print tuples
#生成一個(gè)多層索引
index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second'])
print index
print
df = pd.DataFrame(np.random.randn(8, 2), index=index, columns=['A', 'B'])
print df
print
#將列索引變成行索引
print df.stack()

16.DataFrame的一些操作(14)
import pandas as pd
import numpy as np
tuples = list(zip(*[['bar', 'bar', 'baz', 'baz',
'foo', 'foo', 'qux', 'qux'],
['one', 'two', 'one', 'two',
'one', 'two', 'one', 'two']]))
index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second'])
df = pd.DataFrame(np.random.randn(8, 2), index=index, columns=['A', 'B'])
print df
print
stacked = df.stack()
print stacked
#將行索引轉(zhuǎn)換為列索引
print stacked.unstack()
#轉(zhuǎn)換兩次
print stacked.unstack().unstack()

17.DataFrame的一些操作(15)
import pandas as pd
import numpy as np
df = pd.DataFrame({'A' : ['one', 'one', 'two', 'three'] * 3,
'B' : ['A', 'B', 'C'] * 4,
'C' : ['foo', 'foo', 'foo', 'bar', 'bar', 'bar'] * 2,
'D' : np.random.randn(12),
'E' : np.random.randn(12)})
print df
#根據(jù)A,B索引為行,C的索引為列處理D的值
print pd.pivot_table(df, values='D', index=['A', 'B'], columns=['C'])
#感覺A列等于one為索引,根據(jù)C列組合的平均值
print df[df.A=='one'].groupby('C').mean()

18.時(shí)間序列(1)
import pandas as pd
import numpy as np
#創(chuàng)建一個(gè)以20170220為基準(zhǔn)的以秒為單位的向前推進(jìn)600個(gè)的時(shí)間序列
rng = pd.date_range('20170220', periods=600, freq='s')
print rng
#以時(shí)間序列為索引的序列
print pd.Series(np.random.randint(0, 500, len(rng)), index=rng)

19.時(shí)間序列(2)
import pandas as pd
import numpy as np
rng = pd.date_range('20170220', periods=600, freq='s')
ts = pd.Series(np.random.randint(0, 500, len(rng)), index=rng)
#重采樣,以2分鐘為單位進(jìn)行加和采樣
print ts.resample('2Min', how='sum')
#列出2011年1季度到2017年1季度
rng1 = pd.period_range('2011Q1','2017Q1',freq='Q')
print rng1
#轉(zhuǎn)換成時(shí)間戳形式
print rng1.to_timestamp()
#時(shí)間加減法
print pd.Timestamp('20170220') - pd.Timestamp('20170112')
print pd.Timestamp('20170220') + pd.Timedelta(days=12)

20.數(shù)據(jù)類別
import pandas as pd
import numpy as np
df = pd.DataFrame({"id":[1,2,3,4,5,6], "raw_grade":['a', 'b', 'b', 'a', 'a', 'e']})
print df
#添加類別數(shù)據(jù),以raw_grade的值為類別基礎(chǔ)
df["grade"] = df["raw_grade"].astype("category")
print df
#打印類別
print df["grade"].cat.categories
#更改類別
df["grade"].cat.categories = ["very good", "good", "very bad"]
print df
#根據(jù)grade的值排序
print df.sort_values(by='grade', ascending=True)
#根據(jù)grade排序顯示數(shù)量
print df.groupby("grade").size()

21.數(shù)據(jù)可視化
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
ts = pd.Series(np.random.randn(1000), index=pd.date_range('20170220', periods=1000))
ts = ts.cumsum()
print ts
ts.plot()
plt.show()

22.數(shù)據(jù)讀寫
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(10, 4), columns=list('ABCD'))
#數(shù)據(jù)保存,相對(duì)路徑
df.to_csv('data.csv')
#數(shù)據(jù)讀取
print pd.read_csv('data.csv', index_col=0)

數(shù)據(jù)被保存到這個(gè)文件中:

打開看看:

以上這篇Python數(shù)據(jù)分析庫(kù)pandas基本操作方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Python數(shù)據(jù)分析?Pandas?Series對(duì)象操作
- Python數(shù)據(jù)分析之?Pandas?Dataframe修改和刪除及查詢操作
- Python數(shù)據(jù)分析之?Pandas?Dataframe合并和去重操作
- Python數(shù)據(jù)分析23種Pandas核心操作方法總結(jié)
- Python數(shù)據(jù)分析Pandas?Dataframe排序操作
- 五個(gè)Pandas?實(shí)戰(zhàn)案例帶你分析操作數(shù)據(jù)
- Python數(shù)據(jù)分析之pandas比較操作
- Pandas數(shù)據(jù)操作及數(shù)據(jù)分析常用技術(shù)介紹
相關(guān)文章
python生成每日?qǐng)?bào)表數(shù)據(jù)(Excel)并郵件發(fā)送的實(shí)例
今天小編就為大家分享一篇python生成每日?qǐng)?bào)表數(shù)據(jù)(Excel)并郵件發(fā)送的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-02-02
Python實(shí)現(xiàn)簡(jiǎn)單的2048小游戲
這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)簡(jiǎn)單的2048小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-03-03
Python+OpenCV六種實(shí)時(shí)圖像處理詳細(xì)講解
OpenCV常用的圖像處理為閾值二值化、邊緣檢測(cè)、輪廓檢測(cè)、高斯濾波、色彩轉(zhuǎn)換、調(diào)節(jié)對(duì)比度。本文主要介紹了利用Python和OpenCV對(duì)實(shí)時(shí)圖像進(jìn)行上述六種操作的詳細(xì)講解,感興趣的可以了解一下。2021-11-11
Python開發(fā)生產(chǎn)環(huán)境常用的4個(gè)工具(實(shí)用推薦)
構(gòu)建優(yōu)秀的軟件需要遵循特定的規(guī)則并執(zhí)行行業(yè)標(biāo)準(zhǔn),如何在真實(shí)的生產(chǎn)環(huán)境開發(fā)中體現(xiàn)呢?在這篇文章中,我將向您展示我在Python項(xiàng)目中設(shè)置的4種工具,以簡(jiǎn)化開發(fā)工作流程并執(zhí)行一些最佳實(shí)踐,這些工具幫助我提高了效率,節(jié)省了時(shí)間,希望你讀完也能有所收獲2024-01-01
解決python執(zhí)行不輸出系統(tǒng)命令彈框的問題
今天小編就為大家分享一篇解決python執(zhí)行不輸出系統(tǒng)命令彈框的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-06-06
詳解Django rest_framework實(shí)現(xiàn)RESTful API
這篇文章主要介紹了詳解Django rest_framework實(shí)現(xiàn)RESTful API,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-05-05
keras的ImageDataGenerator和flow()的用法說明
這篇文章主要介紹了keras的ImageDataGenerator和flow()的用法說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-07-07

