首页 > 编程知识 正文

python语言及数据处理,python在excel中的应用

时间:2023-05-05 15:38:53 阅读:160323 作者:1273

目录读取数据显示数据显示数据行和列数显示数据格式dtpyes显示列名默认列名显示数据添加后五行显示数据唯一值跳过文件第I行不读取缺失值数据清洗处理空值更改数据格式更改列名替换删除列表中的值数据预处理数据按提取过滤条件过滤数据汇总分类汇总数据透视数据统计数据采样描述统计协方差相关分析读取数据importpandasaspdimportnumpyartnumpyart importmatpl ot lib.pyplotaspltfromdatetimeimportdatetimefrompandasimportseries,DataFrame读取x.xlsx文件

EXCEL文件方法xlrd模块import xlrd读取数据df=xlrd.open_workbook(x.xlsx ) )方法pandas模块import pandas as pd读取数据df=PD.rd

df.shape (24247,17 ) )。

有24247行、17列的数据

显示数据格式DTP是

df.dtypes

数据格式描述文件

image.png表示列名df.columns

如果列名数据中没有标题行,请使用pandas添加缺省列名df=PD.read_excel(x.xlsx ),header=None ) # (上一数据的前五行df.head(5) )

添加默认列名由于本数据中有列名,因此不需要添加显示数据的后五行

df.Tail(5) )。

数据的最后五行显示数据的唯一值(unique函数)

df['raddg级别' ].unique (

raddg级别为0是因为输入了数据丢失值

不读取哪里的数据,请skiprows=[i],不要跳过文件的第I行进行读取

raddg编号20124403的行df=PD.read_excel(x.xlsx ),skiprows=[2] ) df.head )未被读取

不读第2行就识别缺失值

#所有缺少的值将显示为true#df.isnull(PD.insull ) df )

缺少值数据清洗处理显示空值

删除空值 (dropna函数)

df.dropna(how='any ' ) ) )。

删除空值

空值填充空值(fillna函数)

#null值用0填充df.fillna(value=0)

填空值

用均值对空值进行填充

#以raddg响应时间的平均值表示缺少的值为df['raddg响应时间' ].fillna(df['raddg响应时间'.].mean ) ) () ) ) )

填充平均值 更改数据格式

dtypes函数中表示地区的数据格式为int64,现在已更改为float格式

df[ '地区' ].astype('float64 ) )。

float64 更改列名称

df.rename (columns={ ' im root ' : ' root ' } ) ) ) ) ) ) ) df.rename ) )

重命名列以删除重复值(drop_duplicates ) ) (函数) ) ) ) ) ) ) ) ) ) ) ) )

最初出现的保留,剩下的删除

#默认情况下,最先出现的被保留,最后出现的被删除的df[ '店' ].drop_duplicates ()

最后一次出现的保留,其余删除

df

['门店'].drop_duplicates(keep = 'last')
最后一次出现的保留 对列表内的值进行替换(replace函数)df['客户UCID'].replace('10531975', '110')
替换 数据预处理

对数据进行排序

df.sort_values(by=['客户当天发送消息数'])
排序

数据分组——excel中的数据透视表
** 对客户聊天记录进行分组

#如果price列的值>3000,group列显示high,否则显示lowdf['group'] = np.where(df['客户当天发送消息数'] > 5,'high','low')df

分组

对符合多个条件进行分组

# 符合raddg级别为A1且raddg响应时长>24的在sign列显示为1df.loc[(df['raddg级别'] == 'A1') & (df['raddg响应时长']>= 24.0), 'sign']=1df
符合多个条件 数据分列pd.DataFrame((x.split('网') for x in df['客户注册渠道']), index=df.index,columns=['客户注册渠道','size'])
分列 数据提取 按标签提取 loc函数df.loc[0:3]
提取0-3行的数据 按日期进行提取# 重新设置索引df.reset_index()#设置日期为索引df=df.set_index('日期')#提取2016年11月2号的数据df[‘2016-11-2’ : '2016-11-02']
11月2号的数据 按位置进行提取(iloc函数) 按区域提取df.iloc[:4, :5]
4行5列 按位置提取#[0, 2, 5] 代表指定的行,[ 4, 5 ] 代表指定的列df.iloc[[0,2,5],[4,5]]
image.png 按标签和位置提取 ix# 行按日期排列,列按位置设置df.ix['2016-11-03':'2016-11-03',4:6]
标签和位置

按条件提取(loc与isin函数)

用isin函数进行判断# 判断raddg级别是否为A3df['raddg级别'].isin(['A3'])
判断 先判断结果,将结果为True的提取#先判断raddg级别列里是否包含A3和M4,然后将复合条件的数据提取出来。df.loc[df['raddg级别'].isin(['A3','M4'])]
提取

从合并的数据中提出指定的数值

# 提取链家网三个字data = df['客户注册渠道']pd.DataFrame(data.str[:3])
提取指定数值 数据筛选

按条件筛选

符合多个条件,并显示指定条件(与)#级别为M4,发送消息数大于110df.loc[(df['raddg当天发送消息数'] > 110) & (df['raddg级别'] == 'M4'), ['raddg响应时长','是否5分钟内响应','raddg系统号']]
级别为M4,发送消息大于110 符合多个条件中的一个#发送消息数大于400或响应时长大于60000df.loc[(df['raddg当天发送消息数'] > 400) | (df['raddg响应时长'] > 60000.0), ['raddg响应时长','raddg系统号']].sort(['raddg响应时长'])
或 #筛选完可直接求和df.loc[(df['raddg当天发送消息数'] > 400) | (df['raddg响应时长'] > 60000.0), ['raddg响应时长','raddg系统号']].sort(['raddg响应时长']).raddg响应时长.sum()686046.0 不等于df.loc[(df['raddg当天发送消息数']!= 200) & (df['raddg级别'] == 'A4'), ['raddg响应时长','raddg系统号']].sort(['raddg响应时长'])
非 # count() 算总数df.loc[(df['raddg当天发送消息数']!= 200) & (df['raddg级别'] == 'A4'), ['raddg响应时长','raddg系统号']].sort(['raddg响应时长']).raddg系统号.count()927

使用query函数

df.query('raddg级别 == ["A4", "M4"]')
A4或M4 数据汇总 分类汇总groupby 对所有列进行分类汇总df.groupby('raddg级别').count()
raddg级别 对特定列进行汇总df.groupby('raddg级别')['raddg响应时长'].count()
对响应时长列进行汇总 增加分类条件df.groupby(['raddg级别','raddg是否回复'])['raddg响应时长'].count()
数据不准确,因为进行了筛选填充 进行分组并进行算数运算# 对raddg响应时长进行分类汇总,并计算均值df.groupby('raddg级别')['raddg响应时长'].agg([ np.mean])
分类,均值 数据透视pd.pivot_table(df,index=["raddg当天发送消息数"],values=["raddg响应时长"], columns=["raddg级别"],aggfunc[len,np.sum],fill_value=0,margins=True)

数据透视 数据统计 数据采样 简单随机抽取sampledf.sample(n=3)
随机抽取3行 设置采样权重
需要对每一行进行权重设置,列表行数少可行,过多不可行
假设有4行数据,设置采样权重weights = [0, 0, 0.5, 0.5]df.sample(n=4, weights=weights)确定采样后是否放回# 采样后放回,Truedf.sample(n=6, replace=True)

描述统计 describe函数
自动生成数据的数量,均值,标准差等数据

#round(2),显示小数点后面2位数,T转置df.describe().round(2).T
描述统计 标准差std()df['raddg响应时长'].std()5605.0826439555485

协方差cov

#计算两个字段之间的协方差df['raddg当天发送消息数'].cov(df['客户当天发送消息数'])

81.036975520713398

相关性分析corr
相关系数在-1到1之间,接近1为正相关,接近-1为负相关,0为不相关

df['客户当天发送消息数'].corr(df['raddg当天发送消息数'])

0.73482229334669258



作者:yxdhmgsjx书生
链接:http://www.jianshu.com/p/356a579062aa
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。