数据分析-python模块5.20

昨日内容回顾

  • numpy中的运算符

    数学运算符
    	+-*/%//**
    比较运算符
    	greater less equal
    # numpy中的数字在运算的时候按照位置一一对应
    
  • numpy中的内置函数

    必会统计函数
    	max min sum ...
    # axis参数针对多维数组可以控制行列
    	axis = 1	行
        axis = 0
  • numpy中的随机数模

    与python中的random模块类似
    
    np.random.方法
    # 无需过多记忆 使用时查看内部源码
    
  • 赌场小案例

    # 练习python编程以及最基础的数据分析思维
    
  • pandas模块

    整个数据分析模块中最重要也是使用频率最高的一个
    
    import pandas as pd
    
  • pandas两大数据结构之Series

    行标签/行索引		真实数据
    pd.Series({'a':111,'b':222})
    
  • 索引取值

    loc
    iloc
    
  • 数据操作

    .append()
    索引取值之后赋值操作即可
    
  • 缺失数据的概念

    NaN	表示数据缺失
    NaN本身是浮点型
    
    isnull()
    notnull()
    fillna()
    dropna()
    # 数据清洗的时候会详细使用
    
  • 基本运算符

    add		add
    sub		substract
    mul		multiple
    div		divide
    
  • pandas数据结构之DataFrame

    表格型数据结构()
    DataFrame可以与excel表格互相转换
    
    列字段名称	行索引		真实数据
    
  • 创建DataFrame多种方式

    # 起码掌握下面这种
    pd.DataFrame({'name':['jason','kevin','tony','tom'],'age':[18,22,27,38]})
    """
    index
    columns
    """
    最好尽肯多的掌握创建方式
    

    今日内容概要

    • 作业讲解
    • DataFrame常用方法
    • 读取外部数据(三种)
    • 前期数据概览
    • 表数据的行列操作
    • 表数据的查询操作
    • 表数据类型的操作
    • 异常值处理策略
    • 缺失值处理策略
    • 数据汇总(透视表)
    • 数据合并(连表操作)

今日内容详细

作业讲解

1.计算下列数组元素和
    array([[ 80.5, 60., 40.1, 20., 90.7],
           [ 10.5, 30., 50.4, 70.3, 90.],
           [ 35.2, 35., 39.8, 39., 31.],
           [91.2, 83.4, 85.6, 67.8, 99.]])
    '''不使用axis参数(python代码实现)'''
    # 计算每一行的和
    '''使用axis参数(np内置数学统计函数)'''
    # 计算每一行的和
    
'''不使用axis参数(python代码实现)'''
# 计算每一行的和
l = []
for i in res:  # 循环取出每一行的数据
    # 计算每一行的和
    row_sum = sum(i)
    # 将每一行的和添加到新列表中
    l.append(row_sum)
print(l)

#############################################################
# 能否一行python解决上述问题   列表生成式
new_l = [sum(i) for i in res]
new_l

列表生成式(重要)

# 基本
In [1]: l1 = [11,22,33,44,55,66]  # 将列表中每个元素加一
In [2]: new_l = []  #  定义一个空列表
In [4]: for i in l1:  # 循环取出列表中的原数据
   ...:     new_l.append(i + 1)
   ...:
In [5]: new_l
Out[5]: [12, 23, 34, 45, 56, 67]
    
# 列表生成式一行代码
new_l = [i+1 for i in l1]


# 筛选大于33的元素
In [2]: new_l = []  #  定义一个空列表
In [4]: for i in l1:  # 循环取出列表中的原数据
   ...:     if i > 33:
        		new_l.append(i)
In [5]: new_l
Out[5]: [44, 55, 66]
# 列表生成式一行代码
new_l = [i for i in l1 if i>33]

DataFrame常用方法

# 1.获取表格的行标签/行索引名称
df1.index
RangeIndex(start=0, stop=5, step=1)

# 2.获取表格的列字段名称
df1.columns
Index(['name', 'age', 'addr'], dtype='object')
df1

# 3.转置
df1.T
		0	1	2	3	4
name	jason	kevin	tony	oscar	jack
age		18	28	38	48	58
addr	安徽	山东	上海	北京	深圳

# 4.获取表格的数据部分
df1.values
array([['jason', 18, '安徽'],
       ['kevin', 28, '山东'],
       ['tony', 38, '上海'],
       ['oscar', 48, '北京'],
       ['jack', 58, '深圳']], dtype=object)

外部数据读入

"""
能够存储数据的地方有
    1.文件
    2.MySQL数据库
    3.Excel


excel文件后缀名变化
    老版本的excel软件生成的文件后缀名是.xls
    新版本的excel软件生成的文件后缀名是.xlsx
        mac电脑excel文件后缀名还可能是.csv
"""

读取数据之read_csv

# read_csv既可以读取普通的文本文件也可以读取.csv结尾的文件 
pd.read_csv(filepath_or_buffer, sep=',', header='infer', names=None, usecols=None, skiprows=None, skipfooter=None, converters=None, encoding=None)
            
filepath_or_buffer:指定txt文件或csv文件所在的具体路径 
sep:指定原数据集中各字段之间的分隔符,默认为逗号”,id	name	income
        1   jason	 10
header:是否需要将原数据集中的第一行作为表头,默认将第一行用作字段名称 
        如果原始数据没有表头需要将该参数设置为None 
names:如果原数据集中没有字段,可以通过该参数在数据读取时给数据框添加具体的表头 
usecols:指定需要读取原数据集中的哪些变量名 
skiprows:数据读取时,指定需要跳过原数据集开头的行数
         有一些表格开头是有几行文字说明的,读取的时候应该跳过
skipfooter:数据读取时,指定需要跳过原数据集末尾的行数 
converters:用于数据类型的转换(以字典的形式指定) 
encoding:如果文件中含有中文,有时需要指定字符编码

# 参考ipynb文件

读取数据之read_excel

# 读取.xlsx和.xls文件
pd.read_excel(io, sheetname=0, header=0, skiprows=None, skip_footer=0, index_col=None, usecols=None,names=None,
na_values=None, thousands=None, convert_float=True)

io:指定电子表格的具体路径 
sheetname:指定需要读取电子表格中的第几个Sheet,既可以传递整数也可以传递具体的Sheet名称 
header:是否需要将数据集的第一行用作表头,默认为是需要的 
skiprows:读取数据时,指定跳过的开始行数
skipfooters:读取数据时,指定跳过的末尾行数 
index_col:指定哪些列用作数据框的行索引(标签)
usecols:指定需要使用的列(A B C...)
na_values:指定原始数据中哪些特殊值代表了缺失值 
thousands:指定原始数据集中的千分位符 
convert_float:默认将所有的数值型字段转换为浮点型字段 
converters:通过字典的形式,指定某些列需要转换的形式

read_sql方法

# 读取.md的文件中的表格
import pymysql
conn = pymysql.connect(host,port,user,password, database, charset)

host:指定需要访问的MySQL服务器
port:指定访问MySQL数据库的端口号 charset:指定读取MySQL数据库的字符集,如果数据库表中含有中文,一般可以尝试将该参数设置为 “utf8”或“gbk”
user:指定访问MySQL数据库的用户名
password:指定访问MySQL数据库的密码
database:指定访问MySQL数据库的具体库名
  
# 利用pymysql创建好链接MySQL的链接之后即可通过该链接操作MySQL
pd.read_sql('select * from user', con = conn)
conn.close()  # 关闭链接

数据概览(掌握)

df.columns  	# 查看列 
df.index  		# 查看行
df.shape		# 行列 
df.dtypes  		# 数据类型 
df.describe  	# 统计描述
	默认只会统计数字类型的数据,非数字类型统计需要加参数include
  	sec_buildings.describe(include='object')
df.head()  # 取头部多条数据
df.tail()  # 取尾部多条数据
# 可以查看整体数据类型 以及每个字段缺失数据的个数
df3.info()

列数据操作

# 修改列字段名称
df3.rename(columns={'序号':'编号','薪资':'待遇'})
# 添加列字段
df3['描述'] = '都很牛逼'
df3['等级'] = ['a','b','c','d','e']
df3['年薪'] = df3['薪资'] * 12
df3['钱数'] = df3['工龄'] * df3['薪资'] * 12
# 指定位置
df3.insert(4,'年龄',[18,28,38,48,58])

内容补充

如果想在编程环境下直接执行下载模块的命令
!pip3 install 模块名  # 只需要加一个感叹号

今日作业

1.利用read_excel完成
	df5 = pd.read_excel(r'data_test06.xlsx',
                    skiprows=5,
                    usecols=['ID','Name','isRun','Date']
                   )
	df5
    # 需求分析
    # 针对ID自动递增填充    作业
    # 针对isRun自动交替变换  作业
 
2.利用read_sql读取之前多表查询练习题里面所有的表
3.整理今日内容并复习多表查询练习题(SQL语句)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值