图书学习打卡:Python数据分析基础教程王斌会 第三章 Python编程分析基础

    技术2025-06-05  22

    Python数据分析基础教程/王斌会

    第三章 Python编程分析基础

    - 3.1Python的数据类型

    - 3.2数值分析库numpy

    3.2.1一维数组

    其他有帮助的生成数:

    np.random.randint(1,9) #1~9随机数 np.random.rand(10) #10个均匀随机数 np.random.randn(10) #10个正态随机数

    3.2.2二维数组

    3.2.3其他数组 一点点补充

    np.empty([3,3]) #空数组 np.zeros((3,3)) #零矩阵 np.ones((3,3)) #1矩阵 np.eye(3) #单位阵

    - 3.3数据分析库pandas

    3.3.1序列Series*****

    说明:

    #(3)序列合并 pd.concat([S2,S3],axis=0) #按行并序列 pd.concat([S2,S3],axis=1) #按列并序列

    3.3.2数据框DateFrame*****

    ###3.3.2 数据框:DataFrame #(1)生成数据框 pd.DataFrame() #生成空数据框 #(2)根据列表创建数据框 pd.DataFrame(X) pd.DataFrame(X,columns=['X'],index=range(5)) pd.DataFrame(weight,columns=['weight'],index=['A','B','C','D','E']) #(3)根据字典创建数据框 '''通过字典列表生成数据框是Python较快捷的方式 ''' df1=pd.DataFrame({'S1':S1,'S2':S2,'S3':S3});df1 df2=pd.DataFrame({'sex':sex,'weight':weight},index=X);df2 #(4)增加数据框列 df2['weight2']=df2.weight**2; df2 # 生成新列 #(5)删除数据框列 del df2['weight2']; df2 #删除数据列 #(5)缺失值处理 df3=pd.DataFrame({'S2':S2,'S3':S3},index=S1);df3 df3.isnull()#是缺失值返回True,否则范围False df3.isnull().sum()#返回每列包含的缺失值的个数 df3.dropna() #直接删除含有缺失值的行,多变量谨慎使用 #df3.dropna(how = 'all')#只删除全是缺失值的行 #(7)数据框排序 df3.sort_index() #按index排序 df3.sort_values(by='S3') #按列值排序

    总结:pd.DataFrame()中的参数

    文章参考

    3.3.3数据的读写

    总结:pd.read_excel()中的参数

    Basic Python Knowledge You Need To Know:导入Excel之pd.read_excel参数小结

    3.3.4数据的保存

    3.3.5对数据框的操作

    补充与汇总:

    ####3.3.4.1 基本信息 #(1)数据框显示 BSdata.info() #数据框信息 BSdata.head() #显示前5行 BSdata.tail() #显示后5行 #(2)数据框列名(变量名) BSdata.columns #查看列名称 #(3)数据框行名(样品名) BSdata.index #数据框行名 #(4)数据框维度 BSdata.shape #显示数据框的行数和列数 BSdata.shape[0] #数据框行数 BSdata.shape[1] #数据框列数 #(5)数据框值(数组) BSdata.values #数据框值数组

    3.3.6选取变量

    BSdata.身高 # 取一列数据,BSdata['身高'] BSdata[['身高','体重']] #取两列数据 BSdata.iloc[:,2] # 取1列 BSdata.iloc[:,2:4] # 取3 、4 列 BSdata.loc[3] #取1行 BSdata.loc[3:5] #取3-5行 BSdata.loc[:3,['身高','体重']] BSdata.iloc[:3,:5] #0到2行和1:5列 BSdata[BSdata['身高']>180] BSdata[(BSdata['身高']>180)&(BSdata['体重']<80)]

    3.3.7数据框的运算

    BSdata['体重指数']=BSdata['体重']/(BSdata['身高']/100)**2 round(BSdata[:5],2) pd.concat([BSdata.身高, BSdata.体重],axis=0) pd.concat([BSdata.身高, BSdata.体重],axis=1) BSdata.iloc[:3,:5].T###转置*****

    补充:round()函数的用法

    附一个简单的例子

    In [1]: round(1.5324) Out[1]: 2.0

    In [2]: round(1.5324, 2) Out[2]: 1.53

    - 3.4基础编程运算

    - 附件:第三章代码汇总

    #3 Python 编程分析基础 ##3.1 Python 数据类型 ###3.1.1Pyhton 对象 x=10.12 #创建对象x del x #删除对象x ###3.1.2 数据基本类型 #数值型 n=10 #整数 n print("n=",n) x=10.234 #实数 print(x) print("x=%10.5f"%x) #逻辑型 a=True;a b=False;b 10>3 10<3 #字符型 s='IlovePython';s s[7] s[2:6] s+s s*2 float('nan') ###3.1.3 标准数据类型 #(1)List(列表) list1=[] # 空列表 list1 list1=['Python',786,2.23,'R',70.2] list1 # 输出完整列表 list1[0] # 输出列表的第一个元素 list1[1:3] # 输出第二个至第三个元素 list1[2:] # 输出从第三个开始至列表末尾的所有元素 list1*2 # 输出列表两次 list1+list1[2:4] # 打印组合的列表 X=[1,3,6,4,9];X sex=[' 女',' 男',' 男',' 女',' 男'] sex weight=[67,66,83,68,70]; weight #(2)Tuple(元组) #(3)Dictionary(字典) {} #空字典 dict1={'name':'john','code':6734,'dept':'sales'};dict1 #定义字典 dict1['code'] # 输出键为'code' 的值 dict1.keys() # 输出所有键 dict1.values() # 输出所有值 dict2={'sex': sex,'weight':weight}; dict2 #根据列表构成字典 ##3.2 数值分析库numpy ###3.2.1 一维数组(向量) import numpy as np #加载数组包 np.array([1,2,3,4,5]) #一维数组 np.array([1,2,3,np.nan,5]) #包含缺失值的数组 np.array(X) #列表变数组 np.arange(9) #数组序列 np.arange(1,9,0.5) #等差数列 np.linspace(1,9,5) #等距数列 np.random.randint(1,9) #1~9随机数 np.random.rand(10) #10个均匀随机数 np.random.randn(10) #10个正态随机数 ###3.2.2 二维数组(矩阵) np.array([[1,2],[3,4],[5,6]]) #二维数组 A=np.arange(9).reshape((3,3));A # 形成3x3 ###3.2.3 数组的操作 A.shape np.empty([3,3]) #空数组 np.zeros((3,3)) #零矩阵 np.ones((3,3)) #1矩阵 np.eye(3) #单位阵 ##3.3 数据分析库pandas import pandas as pd #加载数据分析包 ###3.3.1 序列:Seriers #(1)创建序列(向量、一维数组) pd.Series() #生成空序列 #(2)根据列表构建序列 X=[1,3,6,4,9] S1=pd.Series(X);S1 S2=pd.Series(weight);S2 S3=pd.Series(sex);S3 #(3)序列合并 pd.concat([S2,S3],axis=0) #按行并序列 pd.concat([S2,S3],axis=1) #按列并序列 #(4)序列切边 S1[2] S3[1:4] ###3.3.2 数据框:DataFrame #(1)生成数据框 pd.DataFrame() #生成空数据框 #(2)根据列表创建数据框 pd.DataFrame(X) pd.DataFrame(X,columns=['X'],index=range(5)) pd.DataFrame(weight,columns=['weight'],index=['A','B','C','D','E']) #(3)根据字典创建数据框 '''通过字典列表生成数据框是Python较快捷的方式 ''' df1=pd.DataFrame({'S1':S1,'S2':S2,'S3':S3});df1 df2=pd.DataFrame({'sex':sex,'weight':weight},index=X);df2 #(4)增加数据框列 df2['weight2']=df2.weight**2; df2 # 生成新列 #(5)删除数据框列 del df2['weight2']; df2 #删除数据列 #(6)缺失值处理 df3=pd.DataFrame({'S2':S2,'S3':S3},index=S1);df3 df3.isnull()#是缺失值返回True,否则范围False df3.isnull().sum()#返回每列包含的缺失值的个数 df3.dropna() #直接删除含有缺失值的行,多变量谨慎使用 #df3.dropna(how = 'all')#只删除全是缺失值的行 #(7)数据框排序 df3.sort_index() #按index排序 df3.sort_values(by='S3') #按列值排序 ###3.3.3 数据框的读写 ####3.3.3.1pandas读取数据集 #(1)从剪切板上读取 #BSdata=pd.read_clipboard(); BSdata[:5] #从剪切板上复制数据 #(2)读取csv格式数据 #BSdata=pd.read_csv("BSdata.csv",encoding='utf-8') #注意中文格式 BSdata[6:9] #(3)读取Excel格式数据 BSdata=pd.read_excel('DaPy_data.xlsx','BSdata');BSdata[-5:] ####3.3.3.2pandas数据集的保存 BSdata.to_csv('BSdata1.csv') #将数据框BSdata保存到BSdata.csv ###3.3.4 数据框的操作 ####3.3.4.1 基本信息 #(1)数据框显示 BSdata.info() #数据框信息 BSdata.head() #显示前5行 BSdata.tail() #显示后5行 #(2)数据框列名(变量名) BSdata.columns #查看列名称 #(3)数据框行名(样品名) BSdata.index #数据框行名 #(4)数据框维度 BSdata.shape #显示数据框的行数和列数 BSdata.shape[0] #数据框行数 BSdata.shape[1] #数据框列数 #(5)数据框值(数组) BSdata.values #数据框值数组 ####3.3.4.2 选取变量 BSdata.身高 # 取一列数据,BSdata['身高'] BSdata[['身高','体重']] #取两列数据 BSdata.iloc[:,2] # 取1列 BSdata.iloc[:,2:4] # 取3 、4 列 ####3.3.4.3 提取样品 BSdata.loc[3] #取1行 BSdata.loc[3:5] #取3-5行 ####3.3.4.4 选取观测与变量 BSdata.loc[:3,['身高','体重']] BSdata.iloc[:3,:5] #0到2行和1:5 ####3.3.4.5 条件选取 BSdata[BSdata['身高']>180] BSdata[(BSdata['身高']>180)&(BSdata['体重']<80)] ####3.3.4.6 数据框的运算 BSdata['体重指数']=BSdata['体重']/(BSdata['身高']/100)**2 round(BSdata[:5],2) pd.concat([BSdata.身高, BSdata.体重],axis=0) pd.concat([BSdata.身高, BSdata.体重],axis=1) BSdata.iloc[:3,:5].T #3.4 Python 编程运算 ##3.4.1 基本运算 ##3.4.2 控制语句 ####3.4.2.1 循环语句for for i in range(1,5): print(i) fruits = ['banana', 'apple', 'mango'] for fruit in fruits: print('当前水果 :', fruit) for var in BSdata.columns: print(var) ####3.4.2.2 条件语句if/else a = -100 if a < 100: print("数值小于100") else: print("数值大于100") -a if a<0 else a ##3.4.3 函数定义 x=[1,3,6,4,9,7,5,8,2];x def xbar(x): n=len(x) xm=sum(x)/n return(xm) xbar(x) np.mean(x)
    Processed: 0.009, SQL: 9