首页 > 编程知识 正文

python异常处理关键字,python数据分析实例

时间:2023-05-04 05:06:24 阅读:160315 作者:4140

先写数据帧吧

importpandasaspdimportnumpyasnptest _ dict={ ' id ' : [ 1,2,3,4,5,6 ],' name':['sdtd ',' Bob,]

1 .查看数据显示dataframe的简要摘要。 这包括每列中非空值的数量df.info (也包括在内)

#返回每列数据的有效说明统计信息df.describe ()

#查看各列的索引号和标签for i,vinenumerate(df.columns ) : print(i ) I,v )

loc[]和iloc[]这两个函数都是用于在数据框中查找数据的函数,简单来说就是他们的区别

loc[]传递了行、列的名称,如loc[‘第几行’、‘其列’]

iloc[]传递行、列的索引。 例如,iloc[],1是第二行,第二列

ps: ': '表示所有行或列

选择从#‘id’到‘math’的所有列df_means=df.loc[:‘id’:’math’] #被指派给iloc [ :12 ]

#要选择多个不连续的列,请选择importnumpyasnpdf _ max=df.iloc [ :NP.r _ [ 0:1,4 ] df _ max2.有关处理缺少数据的信息请看

显示缺少的数据df.isnull(.sum ) )

处理缺少值1 .直接删除

#axis=0表示删除此行,=1表示删除此列df.dropna(axis=0,inplace=True )2.

填充为0df.fillna(0,inplace=True )填充0平均填充、模式数、种类数

df.fillna(df.mean ), inplace=True ) #对于用该列的平均值df.fillna ) value={ ' edu _ deg _ CD ' 3360 train _ tag }填充各列中的缺少值的#对于多列,' deg, 使用inplace=True(3.数据冗馀df.duplicated ) #代替' atdd _ type ' : train _ tag ' atdd '检查冗馀行。 df.drop_duplicates ) inplace=true ) #冗馀df.duplicated )删除脏数据如果处理表单包含错误的数据或写入了错误的数据,4 )脏数据

importpandasaspdimportnumpyasnptest _ dict={ ' id ' : [ 1,2,3,4,5,6 ],' name':['sdtd ',' Bob,]

df.loc[df['math']=='\N']

然后我们想用平均分替换这个脏数据

df.loc[df['math']=='\N ',' math']=df.drop(1).math.mean ) ) df

5 .绘图工具1 .线条图

importseabornassnsimportmatplotlib.pyplotasplt.figure (fig size=(10,4 ) ) PLT.xlim (-0,120 ) SNS.boxplot

2 .饼图

importmatplotlib.pyplotaspltenglish=list (df (' English ' ) ) bins=[ 79,85,90, 95]English_cut=PD.cut ) Eenglish bins ) English_cut=list(English_cut ) English _ list=[ ] count _ list=

pend(english) count_list.append(count)print(english_list)print(count_list)# 设置显示中文plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体plt.figure(figsize=(15,10))plt.axis('equal') #该行代码使饼图长宽相等plt.pie(count_list, labels=english_list, explode=(0.1,0,0.2),autopct='%1.1f%%', startangle=90)

6.表与表的连接

这里介绍几个函数merge、concat和append
同样我们先来建立两张数据框

test_dict1 = {'id':[1,2,3,4,5,6],'name':['sdtd','Bob','drdby','Eric','qfddy','Grace '],'math':[88,89,99,78,97,93],'english':[89,94,80,94,94,90]}df1 = pd.DataFrame(test_dict)df1test_dict2 = {'id':[1,2,3,4,5,6],'name':['sdtd','Bob','drdby','Eric','qfddy','Grace '],'sex':['female','male','female','female','female','female']}df2 = pd.DataFrame(test_dict)df2

merge函数,默认情况下,会按照相同字段的进行连接,其他参数一般用不到,主要只能两两拼接
df1.merge(df2)

concat()函数 pd.concat(objs, # 要合并对象axis=0, # 选择合并轴,0按列,1按行join='outer', # 连接方式,默认并集join_axes=None, #参数 join_axes 可指定 index 来对齐数据。这样会切掉指定的 index 之外的数据ignore_index=False, #当设为 ignore_index=True 时,新 df 将不会使用拼接成员 df 的 index,而是重新生成一个从 0 开始的 index 值 keys=None, levels=None, names=None, verify_integrity=False, copy=True ) pd.concat([df1,df2],axis=1)

pd.concat([df1,df2],axis=0)

append函数将被 append 的对象添加到调用者的末尾(类似 list 的方法)。 DataFrame.append(other, ignore_index=False, verify_integrity=False, sort=None) df1.append(df2)

7.分类变量改成数值变量

我们来看这样一张表,想要把性别变成数值变量

import pandas as pdimport numpy as nptest_dict = {'id':[1,2,3,4,5,6],'name':['sdtd','Bob','drdby','Eric','qfddy','Grace '],'math':[90,90,99,78,97,93],'sex':['F','M','F','M','M','M']}df = pd.DataFrame(test_dict)df

方法一:采用sklearn

from sklearn.preprocessing import LabelEncoderclass_le = LabelEncoder()df['sex'] = class_le.fit_transform(df['sex'].values)df


2, 映射字典将类标转换为整数

import numpy as np# class_mapping = {label: idx for idx, label in enumerate(np.unique(df['sex']))}class_mapping = {label: idx for idx, label in [[1,'M'],[0,'F']]}df['sex'] = df['sex'].map(class_mapping)df

3.使用one-hot编码创建一个新的虚拟特征

#3,使用one-hot编码创建一个新的虚拟特征from sklearn.preprocessing import OneHotEncoderpf = pd.get_dummies(df[['sex']]) #生成两列数据sex_F和sex_M,对应性别的行为1,否则为0df = pd.concat([df, pf], axis=1)df.drop(['sex'], axis=1, inplace=True)df

8.改变数据类型

这里提供一个函数,大家自行融会贯通

def downcast_dtypes(df): cols_float = [c for c in df if df[c].dtype == 'float66'] cols_object = [c for c in df if df[c].dtype == 'object'] cols_int64_32 = [c for c in df if df[c].dtype in ['int64', 'int32']] df[cols_float] = df[cols_object].astype(np.float32) df[cols_object] = df[cols_object].astype(np.float32) df[cols_int64_32] = df[cols_int64_32].astype(np.int16) return df

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