网站首页 全球最实用的IT互联网站!

人工智能P2P分享Wind搜索发布信息网站地图标签大全

当前位置:诺佳网 > 软件工程 > 前端开发 > Html/Css >

day01:pandas数据分析

时间:2025-04-13 18:58

人气:

作者:admin

标签:

导读:山顶会课程概述#182; 【数分开发为主题】,迎合多维度接单 课程排期问题 课程大致内容 数据分析基本概述#182; 什么是数据分析?#182; 所谓的数据分析就是使用一些有效的方法和工具对...

 

山顶会课程概述

  • 【数分+开发为主题】,迎合多维度接单
  • 课程排期问题
  • 课程大致内容
   

数据分析基本概述

   

什么是数据分析?

   

所谓的数据分析就是使用一些有效的方法和工具对收集到的数据进行处理,从中发现数据的关键趋势或者规律,以便做出合理的决策和提出有针对性的建议。通俗来说,数据分析就是从数据中找到有用的信息来帮助我们做出更明智、更准确的决策。 image-2.png

   

总之,数据分析是将数据转化为可理解的信息和见解,可为业务提供决策信息、帮助解决问题和提高效率的过程。本质上,所有的决策、战略和规划都需要数据驱动,数据分析在这个过程中起到了突出的作用。

   

简单一句话描述数据分析:数据分析可以实现数据价值的最大化!

   

数据分析的技术实现

   

不写代码的实现

处理简单或者普通难度的业务逻辑的分析处理

   
  • Excel
  • Mysql
  • BI工具(PowerBI或者Tableau)
   

写代码的实现

处理普通难度的业务逻辑的分析处理+复杂的业务逻辑处理

  • Python
    • 数据分析三剑客:Numpy、Pandas和Matplotlib
       

Numpy

   

NumPy(Numerical Python)是Python中用于数据分析、机器学习、科学计算的重要工具包,也是python进行科学计算重要基础库之一,多数值运算。 image.png

   

Pandas(重点)

   

Pandas 库是一个免费、开源的第三方 Python 库,是 Python 数据分析和机器学习必不可少的工具之一,它为 Python 数据分析提供了高性能,且易于使用的数据结构,即 Series 和 DataFrame。Pandas 自诞生后被应用于众多的领域,比如金融、统计学、社会科学、建筑工程等。

Pandas 库基于 Python NumPy 库开发而来,因此,它可以与 Python 的科学计算库配合使用。Pandas 提供了两种数据结构,分别是 Series(一维数组结构)与 DataFrame(二维表格结构),这两种数据结构极大地增强的了 Pandas 的数据分析能力。

   

数据结构介绍:数据存储在不同的数据结构表示的容器中,则可以基于容器的特性对数据进行不同维度的运算处理操作。

   

image.png

   

Matplotlib

   

matplotlib是一个用于创建可视化图表的Python库。它提供了一组广泛的功能,用于绘制线图、散点图、柱状图、饼图、等高线图、热图等各种类型的图表。

matplotlib是一个功能强大且灵活的库,被广泛应用于数据可视化、科学计算、工程绘图等领域。

图表绘制在数据分析中主要用户进行数据探索和分析结果的展示。

   

 

   

pandas数据分析库

Pandas 提供了两种数据结构,分别是 Series(一维数组结构)与 DataFrame(二维数组结构),这两种数据结构极大地增强的了 Pandas 的数据分析能力。

Series

概述

Series是一种类似与一维数组的对象,由下面两个部分组成:

  • values:一组数据
  • index:相关的数据索引标签

常见操作

  • 创建方式
    • 由列表创建
    • 由字典创建
  In [60]:
import pandas as pd
from pandas import Series,DataFrame
  In [64]:
s1 = Series(data=[3,3,6,6,8,8,9,9])
s1
  Out[64]:
0    3
1    3
2    6
3    6
4    8
5    8
6    9
7    9
dtype: int64
  In [62]:
s2 = Series(data={'name':'bobo','salary':10000,'age':30})
s2
  Out[62]:
name       bobo
salary    10000
age          30
dtype: object
   
  • Series的索引

    • 隐式索引:默认形式的索引(0,1,2....)
    • 显示索引:自定义的索引,可以通过index参数设置显示索引
      • 显示索引的作用:增加了数据的可读性
  In [66]:
s1[[0,2,4]] #通过隐式索引访问元素
  Out[66]:
0    3
2    6
4    8
dtype: int64
  In [69]:
s2['name']
  Out[69]:
'bobo'
   
  • Series的索引和切片
  In [73]:
s1[0:3]
  Out[73]:
0    3
1    3
2    6
dtype: int64
  In [74]:
s2['name':'age']
  Out[74]:
name       bobo
salary    10000
age          30
dtype: object
   
  • Series的常用方法

    • head(),tail()
    • unique(),nunique()
    • value_counts()
    • isnull(),notnull()
  In [76]:
s1.head(3),s1.tail(2) #用来显示前几个或者后几个元素
  Out[76]:
(0    3
 1    3
 2    6
 dtype: int64,
 6    9
 7    9
 dtype: int64)
  In [78]:
s1.unique() #元素去重
  Out[78]:
array([3, 6, 8, 9])
  In [79]:
s1.nunique() #统计去重后元素的个数
  Out[79]:
4
  In [80]:
s1.value_counts() #统计元素出现的次数
  Out[80]:
3    2
6    2
8    2
9    2
dtype: int64
  In [82]:
#series的运算
s1 + 100 #让s1的每一个元素都加上100
  Out[82]:
0    103
1    103
2    106
3    106
4    108
5    108
6    109
7    109
dtype: int64
  In [83]:
s3 = Series(data=[1,2,3],index=['a','b','c'])
s3
  Out[83]:
a    1
b    2
c    3
dtype: int64
  In [84]:
s4 = Series(data=[1,2,3],index=['a','b','d'])
s4
  Out[84]:
a    1
b    2
d    3
dtype: int64
  In [85]:
s3 + s4 #NAN就是None
#在Series的运算中,只有索引一致的元素可以进行算数运算,否则补空
  Out[85]:
a    2.0
b    4.0
c    NaN
d    NaN
dtype: float64
   

DataFrame(重要)

概述

  • DataFrame是一个【表格型】的数据结构。DataFrame由按一定顺序排列的多列数据组成。设计初衷是将Series的使用场景从一维拓展到多维。DataFrame既有行索引,也有列索引。
    • 行索引:index
    • 列索引:columns
    • 值:values

DataFrame的创建

  • 字典创建
  In [87]:
dic = {
    'name':['Tom','Jerry','Jay'],
    'age':[10,20,30],
    'salary':[2000,3000,4000]
}
table = DataFrame(data=dic)
table
  Out[87]:  
 nameagesalary
0 Tom 10 2000
1 Jerry 20 3000
2 Jay 30 4000
   

DataFrame的常用属性

  • values,columns,index,shape
  In [88]:
table.shape #表格的形状
  Out[88]:
(3, 3)
  In [89]:
table.values #返回表格所有的值
  Out[89]:
array([['Tom', 10, 2000],
       ['Jerry', 20, 3000],
       ['Jay', 30, 4000]], dtype=object)
  In [90]:
table.index #行索引
  Out[90]:
RangeIndex(start=0, stop=3, step=1)
  In [91]:
table.columns #列索引
  Out[91]:
Index(['name', 'age', 'salary'], dtype='object')
   

索引操作(重点)

  • 对行进行索引
  • 队列进行索引
  • 对元素进行索引
  In [93]:
dic = {'names':['jay','tom','jerry'],
       'salary':[1000,2000,3000],
      'age':[30,40,50]}
df = DataFrame(data=dic,index=['a','b','c'])
df
  Out[93]:  
 namessalaryage
a jay 1000 30
b tom 2000 40
c jerry 3000 50
  In [94]:
#索引取单列:df[col]
df['age']
  Out[94]:
a    30
b    40
c    50
Name: age, dtype: int64
  In [95]:
#索引取多列:df[[col1,coln]]
df[['age','names']]
  Out[95]:  
 agenames
a 30 jay
b 40 tom
c 50 jerry
  In [96]:
#索引取单行:df.loc/iloc[index]
df.loc['a']
  Out[96]:
names      jay
salary    1000
age         30
Name: a, dtype: object
  In [99]:
df.iloc[0] #iloc后面跟的是隐式索引,loc后面跟显示索引
  Out[99]:
names      jay
salary    1000
age         30
Name: a, dtype: object
  In [100]:
#索引取多行:df.loc/iloc[[index1,indexn]]
df.loc[['b','a']]
  Out[100]:  
 namessalaryage
b tom 2000 40
a jay 1000 30
  In [102]:
df
  Out[102]:  
 namessalaryage
a jay 1000 30
b tom 2000 40
c jerry 3000 50
  In [104]:
#索引取元素
df.loc['b','names'] #逗号左边是行,右边是列
  Out[104]:
'tom'
   

切片操作

  • 批量切行
  • 批量切列
  In [105]:
#切行
df['a':'c']
  Out[105]:  
 namessalaryage
a jay 1000 30
b tom 2000 40
c jerry 3000 50
  In [106]:
#切列
df.loc[:,'names':'salary']
  Out[106]:  
 namessalary
a jay 1000
b tom 2000
c jerry 3000
   

数据查看

  • 查看DataFrame的概览和统计信息
    • head()
    • tail()
    • info()
    • describe()
  In [109]:
df.info() #查看表格的基本信息
   
<class 'pandas.core.frame.DataFrame'>
Index: 3 entries, a to c
Data columns (total 3 columns):
 #   Column  Non-Null Count  Dtype 
---  ------  --------------  ----- 
 0   names   3 non-null      object
 1   salary  3 non-null      int64 
 2   age     3 non-null      int64 
dtypes: int64(2), object(1)
memory usage: 204.0+ bytes
  In [110]:
df.describe() #对数据表格进行统计描述
  Out[110]:  
 salaryage
count 3.0 3.0
mean 2000.0 40.0
std 1000.0 10.0
min 1000.0 30.0
25% 1500.0 35.0
50% 2000.0 40.0
75% 2500.0 45.0
max 3000.0 50.0
   

数据保存与加载

csv
  • to_csv() & read_csv()
  In [112]:
#将df数据写入到文件中存储
dic = {'names':['jay','tom','jerry'],
       'salary':[1000,2000,3000],
      'age':[30,40,50]}
df = pd.DataFrame(data=dic,index=['a','b','c'])
df
  Out[112]:  
 namessalaryage
a jay 1000 30
b tom 2000 40
c jerry 3000 50
  In [113]:
df.to_csv('./df.csv')
  In [114]:
#读取外部文件 ./data/透视表-篮球赛.csv的数据到df表格中
ball = pd.read_csv('data/透视表-篮球赛.csv')
ball
  Out[114]:  
 对手胜负主客场命中投篮数投篮命中率3分命中率篮板助攻得分
0 勇士 10 23 0.435 0.444 6 11 27
1 国王 8 21 0.381 0.286 3 9 27
2 小牛 10 19 0.526 0.462 3 7 29
3 灰熊 8 20 0.400 0.250 5 8 22
4 76人 10 20 0.500 0.250 3 13 27
5 黄蜂 8 18 0.444 0.400 10 11 27
6 灰熊 6 19 0.316 0.222 4 8 20
7 76人 8 21 0.381 0.429 4 7 29
8 尼克斯 9 23 0.391 0.353 5 9 31
9 老鹰 8 15 0.533 0.545 3 11 29
10 爵士 19 25 0.760 0.875 2 13 56
11 骑士 8 21 0.381 0.429 11 13 35
12 灰熊 11 25 0.440 0.429 4 8 38
13 步行者 9 21 0.429 0.250 5 15 26
14 猛龙 8 25 0.320 0.273 6 11 38
15 太阳 12 22 0.545 0.545 2 7 48
16 灰熊 9 20 0.450 0.500 5 7 29
17 掘金 6 16 0.375 0.143 8 9 21
18 尼克斯 12 27 0.444 0.385 2 10 37
19 篮网 13 20 0.650 0.615 10 8 37
20 步行者 8 22 0.364 0.333 8 10 29
21 湖人 13 22 0.591 0.444 4 9 36
22 爵士 8 19 0.421 0.333 5 3 29
23 开拓者 16 29 0.552 0.571 8 3 48
24 鹈鹕 8 16 0.500 0.400 1 17 26
   
Excel

环境安装:

pip install xlrd -i https://pypi.tuna.tsinghua.edu.cn/simple

pip install xlwt -i https://pypi.tuna.tsinghua.edu.cn/simple

pip install openpyxl -i https://pypi.tuna.tsinghua.edu.cn/simple

  • to_excel(filaPath,sheet_name) & read_excel(filaPath,sheet_name)
    • sheet_name工作表名称
  In [116]:
#读取excel数据:data/运营商数据.xlsx
opt = pd.read_excel('data/运营商数据.xlsx')
opt
  Out[116]:  
 用户号码用户套餐月租入网时间近6个月平均话费近6个月平均使用流量近6个月平均使用语音优惠名称号码品牌用户年龄用户性别是否订购是否参与活动活动开始时间活动结束时间外呼团队外呼时间外呼分钟数
0 1 56 20020209 146.2050 9090.910500 398.3167 送3个月会员 4G 55 NaN NaN NaN NaN 201911 91
1 2 50 20060424 50.0000 3980.592767 86.9000 送3个月会员 4G 51 NaN NaN NaN NaN 201909 28
2 3 50 20111206 67.1125 1706.841767 453.0833 送3个月会员 4G 36 会员赠送3个月 201909.0 202008.0 团队D 201909 128
3 4 56 20120412 99.0000 2872.303067 41.3500 送3个月会员 4G 35 会员赠送3个月 201909.0 202008.0 团队D 201909 91
4 5 88 20150503 88.0000 28222.901100 326.3500 送3个月会员 4G 57 会员赠送3个月 201909.0 202008.0 团队D 201909 99
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
16493 16494 49 20041014 49.0500 50.793967 57.2000 送3个月会员 4G 23 会员赠送3个月 201910.0 202009.0 团队D 201910 84
16494 16495 9 20060310 15.4250 554.286000 56.7667 送3个月会员 4G 47 NaN NaN NaN NaN 201911 0
16495 16496 28 20020417 64.7350 0.002900 111.8833 送3个月会员 2G 61 NaN NaN NaN NaN 201910 34
16496 16497 15 20121001 18.1750 186.963833 21.8333 送3个月会员 2G 28 NaN NaN NaN NaN 201910 34
16497 16498 19 20171103 36.2250 3839.240000 149.6667 送3个月会员 4G 37 会员赠送3个月 201910.0 202009.0 团队D 201910 63

16498 rows × 17 columns

  In [117]:
opt.shape
  Out[117]:
(16498, 17)
  In [118]:
#写入数据到excel中
dic = {'names':['jay','tom','jerry'],
       'salary':[1000,2000,3000],
      'age':[30,40,50]}
df = pd.DataFrame(data=dic,index=['a','b','c'])
df
  Out[118]:  
 namessalaryage
a jay 1000 30
b tom 2000 40
c jerry 3000 50
  In [119]:
df.to_excel('dic.xlsx')
   
  • 为什么需要将外部文件的数据读取加载到DataFrame表格中呢?
    • 将外部文件读取到DataFrame中,我们就可以基于DataFrame自身的特性对数据进行不同维度的运算和处理
   
sql

环境安装:

pip install sqlalchemy -i https://pypi.tuna.tsinghua.edu.cn/simple

pip install pymysql -i https://pypi.tuna.tsinghua.edu.cn/simple

   
  • 写入数据到数据库
    • from sqlalchemy import create_engine
    • 创建链接对象:
      • conn = create_engine('mysql+pymysql://root:boboadmin@127.0.0.1:3306/spider?charset=UTF8MB4')
  In [122]:
dic = {'names':['jay','tom','jerry'],
       'salary':[1000,2000,3000],
      'age':[30,40,50]}
df = pd.DataFrame(data=dic)
df
  Out[122]:  
 namessalaryage
0 jay 1000 30
1 tom 2000 40
2 jerry 3000 50
  In [125]:
from sqlalchemy import create_engine
#创建一个链接对象
#mysql+pymysql://用户名:密码@ip:port/dbName?charset=UTF8MB4
conn = create_engine('mysql+pymysql://root:boboadmin@127.0.0.1:3306/new_spider?charset=UTF8MB4')
df.to_sql(name='tb_df_new',con=conn)
  Out[125]:
3
   
  • 读取数据库中的数据
  In [126]:
import pymysql 
conn = pymysql.Connect(
        host = '127.0.0.1', #数据库服务器地址
        port = 3306, #数据库端口
        user = 'root', #数据库的用户名
        password = 'boboadmin', #密码
        db = 'new_spider' #数据库名字
    )
ret = pd.read_sql('select * from dep',conn)
ret
   
温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信