数据分析三大件

本文介绍了Jupyter的基本使用,包括Numpy的数组创建、属性和索引操作,以及Pandas的Series和DataFrame数据结构,详细讲解了数据切片、级联操作和聚合函数。同时,展示了如何进行数据清洗,处理丢失和重复数据。最后提到了使用Matplotlib进行数据可视化的初步概念,如线形图、柱状图等。
摘要由CSDN通过智能技术生成

一、jupyter的基本使用

在这里插入图片描述

二、Numpy

2.1 numpy的创建

在这里插入图片描述

#使用array()创建一个多维数组
import numpy as np
arr=np.array([1,2,3])

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2.2 numpy的属性

在这里插入图片描述

修改数组的元素类型

在这里插入图片描述

2.3 索引和切片

(1)行切片

在这里插入图片描述

(2)列切片

在这里插入图片描述

在这里插入图片描述

注意列切片
在这里插入图片描述
在这里插入图片描述

(3)综合切片

在这里插入图片描述

在这里插入图片描述

(4)倒置

在这里插入图片描述

在这里插入图片描述

* 将图片进行翻转

在这里插入图片描述
在这里插入图片描述

* 裁剪图片

在这里插入图片描述

(5)变形

多维变成一维数组
在这里插入图片描述
一维变多维
在这里插入图片描述

(6)级联操作

只能维度相同的级联
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

* 拼图操作

在这里插入图片描述

(7)聚合操作

在这里插入图片描述

数学相关

常用数学函数在这里插入图片描述
>

方差是标准差的平方

在这里插入图片描述

矩阵相关

在这里插入图片描述
转置
在这里插入图片描述
相乘
在这里插入图片描述

三、Pandas

主要用于 存储非数值的数据类型
在这里插入图片描述
这是两种不同的数据结构
在这里插入图片描述

3.1 Series

在这里插入图片描述
在这里插入图片描述

索引值变为a,b,c,d。

在这里插入图片描述
在这里插入图片描述

3.2 索引和切片

在这里插入图片描述
在这里插入图片描述

3.3 属性

表示一维数组
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
series也只能存储同类型数据

3.4 常用方法

(1)取数据

在这里插入图片描述
在这里插入图片描述

(2)对元素进行判断

在这里插入图片描述
并且每个数组的数据类型为布尔值
在这里插入图片描述

(3)算数运算

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2 Dataframe

(1)创建

由多个Series组成,是个二维数据。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

(2)属性

在这里插入图片描述

在这里插入图片描述

* 练习

在这里插入图片描述

dic={
    '张三':[150,150,150,300],
    '李四':[0,0,0,0]
}
df=DataFrame(data=dic,index=['语文','数学','英语','理综'])
df

在这里插入图片描述

(3)索引

在这里插入图片描述

取列

在这里插入图片描述

  • 取单列

在这里插入图片描述

  • 取a,c两列

在这里插入图片描述

取行、单个元素

在这里插入图片描述

iloc和loc

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(4)切片

在这里插入图片描述

* 应用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.3 股票小项目

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(1)需求1:输出所有 收盘比开盘上涨3%的日期

在这里插入图片描述

(2)需求2:输出开盘比前日收盘跌幅超过2%的日期

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

import tushare as ts
import pandas as pd
from pandas import DataFrame,Series
import numpy as np

# 获取某只股票的历史行情数据
df=ts.get_k_data(code='600519',start='2000-01-01') 
df

# 将互联网上获取的股票数据存储到本地
df.to_csv('./maotai.csv')

# 将本地存储的数据读入到df中
pd.read_csv('./maotai.csv')
df.head()

# 对读取出的数据进行相关处理
# 查看每一列的数据类型
df['date'].dtype

# 另一种方法
df.info()

# 将time列转换为时间序列
df['date']=pd.to_datetime(df['date'])
df['date'].dtype

# 将时间作为原数据的行索引
df.set_index('date',inplace=True)

df.head()

### 需求1:输出所有 收盘比开盘上涨3%的日期

# 伪代码:(收盘-开盘)/开盘 > 0.03
true_index=(df['open']-df['close'])/df['open']>0.03 # 获取到行索引
new=df.loc[true_index]## 得到全是股票上涨的数组
new.index

(new['open']-new['close'])/new['open']>0.03  #验证一下获取到的数据

(df['open']-df['close'])/df['open']>0.03 # 原来是有true用false

### 需求2:输出开盘比前日收盘跌幅超过2%的日期

# 伪代码:(开盘-前日收盘)/前日收盘 < -0.02
df['close'] 

# 使原始代码的close列整体下移一位
# 前日收盘
df['close'].shift(1)

# 成功获取到索引
(df['open']-df['close'].shift(1))/df['close'].shift(1)<-0.02

# 成功获取到日期
df.loc[(df['open']-df['close'].shift(1))/df['close'].shift(1)<-0.02].index

### 需求3: ![image-3.png](attachment:image-3.png)

# 时间节点2010-2023  
#一手股票:100支股票
# 一个完整的年,需要买/卖多少支股票?1200
# 单价使用开盘价 

new=df['2010-01':'2023-6'] #行索引是时间序列才可以这样切
new

# 获取每个月的第一个交易日——使用 数据的重新取样技术
# 根据月份从原始数据中提取每月第一个交易日
the_first=new.resample('M').first()
the_first

the_first['open']


3.4 DataFrame 数据清洗

出现的情况在这里插入图片描述

(1)丢失的数据

有两种丢失数据
None对象类型
np.nan浮点类型

在这里插入图片描述

两者 的区别liangzhe
在这里插入图片描述

(2)处理空值的操作

删除空值所在的行

不能删除列,只能删除行。
需使用到isnull ,notnull ,any ,all

df.drop()的使用在这里插入图片描述> 在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

dropna一步到位
在这里插入图片描述

对缺失值(空值)进行覆盖

当删除的成本过高时,选择覆盖
在这里插入图片描述

(3)处理重复数据drop_duplicates

在这里插入图片描述

(4)处理异常数据

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

(5)级联操作concat,append

理解:
将原始数据进行横向或纵向的拼接
横向级联就是将列表在水平方向延伸
列向级联就是在竖直方向延伸

在这里插入图片描述

水平方向的级联

在这里插入图片描述

不匹配级联

不匹配级联时,若想保留数据的完整性,必须使用outer(外级联)==

在这里插入图片描述

竖直方向的级联

在这里插入图片描述

append只能进行列向级联,且是外级联

在这里插入图片描述
在这里插入图片描述

import pandas as pd
import numpy as np
from pandas import Series,DataFrame 

df1=DataFrame(data=np.random.randint(0,10,size=(5,3)),columns=['a','b','c'])
df2=DataFrame(data=np.random.randint(0,10,size=(5,3)),columns=['a','d','c'])

df1

df2

pd.concat((df1,df2),axis=1)#horizon 级联

pd.concat((df1,df2),axis=0)#gradient 级联

# 内连接,去除NAN,只连接索引一致的项
pd.concat((df1,df2),axis=0,join='inner')

df1.append(df2)

df3=DataFrame(data=np.random.randint(0,10,size=(5,2)),columns=['a','b'])

df3

pd.concat((df1,df3),axis=1)  #进行横向级联

pd.concat((df1,df3),axis=0)  #进行纵向级联


(6)合并 merge

是对数据的合并
级联就只是做拼接
级联可以拼接多张表,合并只能对两个表进行操作
在这里插入图片描述

一对一合并

在这里插入图片描述
在这里插入图片描述

df1=DataFrame({
    'employee':['lucy','jack','lisa'],
    'group':['a','b','c']
})
df2=DataFrame({
    'employee':['lucy','jack','lisa'],
    'age':[18,19,20]
})

df1

df2

pd.merge(df1,df2,on='employee')

# 不写on,会默认将两个表共有的列,进行合并
pd.merge(df1,df2)

pd.merge(df1,df2,on='age')


一对多合并

在这里插入图片描述

df3=pd.DataFrame({
    'employee':['lucy','jack'],
    'group':['a','b'],
    'age':[18,19]
})
df3

df4=DataFrame({
    'group':['a','b','b'],
    'salary':[1000,2000,3000]
})
df4

pd.merge(df3,df4)
多对多合并

在这里插入图片描述
在这里插入图片描述

df5=pd.DataFrame({
    'group':['b','b','c'],
    'salary':[1000,2000,3000]
})
df5

df1=DataFrame({
    'employee':['lucy','jack','lisa'],
    'group':['a','b','b']
})
df1

pd.merge(df1,df5)# how默认为inner,不能合并的将被舍弃

pd.merge(df1,df5,how='outer')

左右合并

在这里插入图片描述

pd.merge(df1,df5,how='left')

pd.merge(df1,df5,how='right')
多个共同条件合并

在这里插入图片描述

没有共同索引的合并

在这里插入图片描述

df1=pd.DataFrame({
    'name':['lucy','jack','lisa'],
    'group':['a','b','c'],
    'age':[21,22,18],
})
df2=pd.DataFrame({
    'employee':['lucy','bob','mike'],
    'ages':[18,19,20],
})

df1

df2

# 没有共同索引的数据合并
pd.merge(df1,df2,left_on='name',right_on='employee')

3.5人口分析小项目~

在这里插入图片描述

3.6 替换操作

在这里插入图片描述
在这里插入图片描述

3.7 map——映射&运算工具

在这里插入图片描述

注意!!!
map是Series的方法,只能被它调用。
在这里插入图片描述

map充当运算工具
在这里插入图片描述

3.8 随机抽样

在这里插入图片描述

在这里插入图片描述

将原始数据随机打乱(按列打乱)

在这里插入图片描述
在这里插入图片描述

随机抽样

在这里插入图片描述

3.9 分组聚合

分组
在这里插入图片描述

分组聚合

在这里插入图片描述

!!!!!!这里是引用

高级数据聚合

分组聚合后,根据自定义函数(方法),完成特地功能。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.10 !!透视表和交叉表——26集

在这里插入图片描述

读取数据库中的数据

在这里插入图片描述

(1)透视表

在这里插入图片描述主要做分类汇总
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.11 !!美国大选献金项目数据分析

在这里插入图片描述

四、Matplotlib

4.1 绘制线形图

在这里插入图片描述
在这里插入图片描述

绘制多条线形图(两种方法)
在这里插入图片描述
在这里插入图片描述

(1)设置坐标系比例

figure的调用一定要放在绘图之前,否无效果
在这里插入图片描述坐标轴刻度不发生改变

(2)设置图例

在这里插入图片描述
在这里插入图片描述

(3) 设定 轴名、图名

在这里插入图片描述

(4) 图像的保存

在这里插入图片描述
在这里插入图片描述

(5) 曲线的风格和样式

在这里插入图片描述

4.2 柱状图

在这里插入图片描述
在这里插入图片描述

4.3 直方图

在这里插入图片描述
在这里插入图片描述

4.4 饼图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.5 散点图

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值