python代替excel的常用操作


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

 


免責聲明!

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



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