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