numpy常用函數
%matplotlib notebook
import matplotlib.pyplot as plt
import numpy as np
x1=np.arange(100)#返回0-99的一組等差數列
x2=np.linspace(0,100,100)#從(0,100)均勻取100個點
data=[6,7.5,8,0,1]
x3=np.array(data)#將輸入數據轉換為數組
x4=np.random.randn(100)#隨機生成一個1行的數組
x5=np.random.randn(2,3)#隨機生成一個2行3列的數組
data1=[[1,2,3,4],[5,6,7,8]]
x6=np.array(data1)#將輸入數據轉換為數組
x4
pandas常用函數
一、導入外部數據
import pandas as pd
import numpy as np
path=r'...\*.csv'
df=read_table(path,sep=',',header=None)
或df=pd.Dataframe(pd.read_csv(path,header=None))
二、數據表檢查
(1)數據維度:df.shape #使用shape函數來查看數據表的維度,也就是行數和列數。
(2)數據表信息:df.info() #使用info函數查看數據表的整體信息,包括數據維度、列名稱、數據格式和所占空間等信息。
(3)數據格式:df.dtypes #查看數據表各列格式
df['某列'].dtype #查看單列的格式
(4)檢查空值:df.isnull() #檢查表中數據是否為空值
df['某列'].isnull #檢查某列數據是否為空值
(5)查看唯一值:df['某列'].unique() #查看某列的唯一值,需要先選中列
(6)查看數據表的值:df.values
(7)查看列名稱:df.columns
(8)查看前3行:df.head(3)
(9)查看后3行:df.tail(3)
三、數據清洗
1、處理空值(刪除或填充)
df.dropna(how='any') #刪除數據表中含有空值的行
df.fillna(value=0) #使用數字0填充數據表中的空值
df['price'].fillna(df['price'].mean()) #使用price列的均值填充price列的空值
2、清理空格
df['city']=df['city'].map(str.strip) #清除city列中的字符空格
3、大小寫轉換
df['city']=df['city'].str.lower() #將city列的值轉換為小寫
4、更改數據格式
df['price'].astype('int') #通過astype函數來修改數據格式
5、修改列名稱
df.rename(columns={'old':'new'}) #將列名old修改為new
6、刪除重復項
df['city'].drop_duplicates() #將city列中的重復值刪除,默認保留第一個出現的
df['city'].drop_duplicates(keep='last') #將city列中的重復值刪除,默認保留最后一個
7、數值修改及替換
df['city'].replace('old','new') #將city列出現的old值替換為new
四、數據預處理
1、數據表合並
在excel中沒有直接完成數據表合並的函數,但可以通過vlookup函數分步實現。在python中可以通過merge函數一次性實現。
df_inner=pd.merge(df1,df2,how='inner') #使用merge函數對兩個數據表進行合並,合並的方式為inner,將 兩個數據表中共有的數據匹配到一起生成新的數據表。並命名為 df_inner。
合並的方式還有left,right,outer:
df_inner=pd.merge(df1,df2,how='left')
df_inner=pd.merge(df1,df2,how='right')
df_inner=pd.merge(df1,df2,how='outer')
2、設置索引列
索引列可以進行數據提取、篩選、匯總
df_inner.set_index('id') #設置id列為索引
df_inner.reset_index() #恢復索引
df_inner.set_index('age') #設置age列為索引
3、排序(按索引、按數值)
可以用sort_index()或sort_values(by=['特定列'])按索引或特定列的值排序
df_inner.sort_index() #按索引列排序
df_inner.sort_values(by=['age']) #按特定列的值排序
4、數據分組
df_inner['group']=np.where(df_inner['price']>3000,'high','low') #增加group列,對價格進行分組
df_inner.loc[(df_inner['city']=='Beijing')&(df_inner['price']>=4000),'sign')]=1 #還可以對多個字段的值進行判斷后,進行分組.對city列為北京並且price>=4000的數據標記為1
5、數據分列
在python中使用split函數實現分列
df_split=pd.DataFrame((x.split('-') for x in df_inner['category']),index=df_inner.index,columns=['category','size']) #將df_inner表中的category列分成category、size兩列,分隔符為‘-’。
五、數據提取
1、按標簽提取(loc[])
df_inner.loc[3] #按索引提取(索引=3)單行的數值
df_inner.loc[0:2] #按索引提取區域行數(索引在0-2)的數值
重設date列為索引
df_inner.loc[:'2013-01-04'] #提取2013-01-04之前的所有數據
2、按位置提取(iloc[])
df_inner.iloc[:2,:3] #提取前2行,前3列的數據
df_inner.iloc[[1,3],[3,5]] #提取第1、3行,第3、5列的數據
3、按標簽和位置提取(ix[])
df_inner.ix[:'2013-01-04',:4] #提取2013-01-04之前的行,第3、5列的數據數據
4、按條件提取(區域和條件值)
df_inner.loc[df_inner['city'].isin(['Beijing'])] #篩選city為北京的行
六、數據篩選
1、與
df_inner.loc[(df_inner['age']>25)&(df_inner['city']=='Beijing'),['point','price']]
2、或
df_inner.loc[(df_inner['age']>25)|(df_inner['city']=='Beijing'),['point','price']].sort(['age'])
3、非
df_inner.loc[(df_inner['age']>25)|(df_inner['city']!='Beijing'),['point','price']].sort(['id'])
df_inner.loc[(df_inner['age']>25)|(df_inner['city']!='Beijing'),['point','price']].sort(['id']).city.count()
4、query()函數
df_inner.query('city==['Beijing','shanghai']')
df_inner.query('city==['Beijing','shanghai']').price.sum() #對篩選后的price字段求和
七、數據匯總
1、分類匯總
2、數據透視
八、數據統計
1、數據采樣
2、描述統計
3、相關分析
df_inner['price'].corr(df_inner['point'])
九、數據輸出
1、寫入excel
df_inner.to_excel('excel_to_python_dlp_test.xlsx',sheet_name='test_cc')
2、寫入csv
df_inner.to_csv('excel_to_python_dlp_test2.csv')
本文轉載自:https://zhuanlan.zhihu.com/p/97617276