目录
  • 练习题
  • pandas模块简介
  • 数据类型之Series
  • 缺失数据概念
  • 数据修改规则
  • 布尔值索引
  • 行索引/行标签

 

练习题

1.计算数组每一行和每一列的中位数(不使用axis参数)

import numpy as np
res = np.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.] ])

每一行均值

for i in res:
        print('每一行>>>:',i)
        print('中位数>>>:',np.median(i))

每一列均值

for i in range(res.shape[1]):
        print('每一列>>>:',res[:,i])
        print('中位数>>>:',np.median(res[:,i]))

2.jason有10000块钱,去某赌场嗨皮假设输赢概率都是50%,

并且赢一场赚100输一场亏100

jason总共玩了1500场,写程序计算1500场之后jason还剩多少钱

# 先定义一个变量存储jason的本金
money = 10000

# 利用for循环模拟1500次赌局
for i in range(1500):
# 先判断输赢
    is_right = np.random.choice([1,0])  # 1表示赢 0表示输
# 判断赢则账户加100
if is_right:
    money += 100
# 判断输则账户减100
else:
    money -= 100
# 循环结束即1500场完成
print(money)

扩展:统计jason每一次赌完后账户总额

# 先定义一个变量存储jason的本金
    money = 10000
    # 再定义一个存储每次赌局之后账户金额的变量
    package = []
    # 先将jason初始的本金添加进来
    package.append(money)
    # 利用for循环模拟1500次赌局
    for i in range(1500):
        # 先判断输赢
        is_right = np.random.choice([1,0])  # 1表示赢 0表示输
        # 判断赢则账户加100
        if is_right:
            money += 100
        # 判断输则账户减100
        else:
            money -= 100
        # 每次循环结束之后都将结构添加到列表中
        package.append(money)
    # 循环结束即1500场完成
    # print(money)
    # print('记录',package)

 

pandas模块简介

它是基于numpy构建,让python语言成为了使用最广泛且强大的数据分析语言,针对表格文件的操作也有着巨大的优势,尤其是数据量超过10万的数据

主要功能

1.具备诸多功能的两大数据结构
# Series、DataFrame
两者都是基于Numpy构建出来的
公司中使用频繁的是DataFrame,而Series是构成DataFrame的基础
即一个DataFrame可能由N个Series构成
2.集成时间序列功能
3.提供丰富的数学运算和操作
4.灵活处理缺失数据

下载与导入

# 下载
1.python纯开发环境下
pip3 install pandas
2.anaconda环境下
conda install pandas
'''anaconda已经自动下载好了数据分析相关的模块,无需再下载'''

# 导入
import pandas
import pandas as pd

要点

数据分析三剑客模块由于使用频率很高
所以在很多ipynb文件的开头都会提前导入

import numpy as np
import pandas as pd

 

数据类型之Series

是一种类似于一维数组对象,由数据和相关的标签(索引)组成

第一种:

pd.Series([4,5,6,7,8])

pandas模块_中位数

 

 第二种:

pd.Series([4,5,6,7,8],index=['a','b','c','d','e'])

pandas模块_数据分析_02

 

 

第三种:

pd.Series({"a":1,"b":2})

pandas模块_数据_03

 

 

第四种:

pd.Series(0,index=['a','b','c'])

pandas模块_数据类型_04

 

 

缺失数据概念

在数据处理中如果遇到NaN关键字等同于缺失数据,且NaN属于浮点型

pandas模块_数据分析_05

 

方法: 

1.过滤掉值为NaN的行

dropna()

pandas模块_中位数_06

 

 2.填充缺失数据

fillna() 

pandas模块_中位数_07

 

 解决措施

pandas模块_中位数_08

 

 

3.返回布尔数组

isnull()

pandas模块_数据_09

 

 

4.返回布尔数组

notnull()

pandas模块_数据_10

 

 

数据修改规则

# 如何判断当前数据是否改变?
1.如果执行操作之后有结果说明原数据没有变        
2.如果执行操作之后没有结果说明原数据改变        

布尔值索引

布尔值索引的本质就是按照对应关系筛选出True对应的数据

方法

1.price[mask]

pandas模块_数据类型_11

 

 2.price|mask

pandas模块_数组_12

 

 3.(price>200) & (price<900)

# 针对&符号链接的条件都必须要加括号

pandas模块_数组_13

 

 4.price[(price>200) & (price<900)] 

pandas模块_数据_14

 

 

行索引\行标签

演示一:

pandas模块_数据分析_15

 

 演示二:

pandas模块_数据_16

 

 解决措施

s2.iloc[0]  
s2.loc[1]   

pandas模块_中位数_17