dlp-527

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\',on=df1[\'\'])

df_inner=pd.merge(df1,df2,how=\'right\',on=df2[\'\'])

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

 

分类:

技术点:

相关文章: