Python数据分析依赖的两个对象
1.导入外部数据
读取excel文件数据
excel文件是微软办公软件excel使用的文件格式,用于存储的结构化数据。
Python中读取excel文件的方法: 调用pandas库的read_excel函数。
data=pd.read_excel(r’D:\工作\2.教学\任课材料\Python数据分析与应用\新课件 \data'+r'\meal_order_detail.xlsx’)
#文件路径和名称构成的字符串
读取文本数据(以csv文件为例)
Python中读取CSV格式文件的方法: 调用pandas库的read csv函数。
data = pd.read_csv(r'meal_order_info.csv',#文件路径和名称构成的字符串(我的是在桌面)
sep =',',#用于分隔数据的宇符
encoding='gbk') #编码格式
读取数据库数据
Pandas库中提供连接Mysql等数据库的方法,可以在python读取数据库中的结构化数据。
Pandas库中读取MySQL等数据库的方法中可以传入sql语句字符串作为参数,实现sql语句的运行。
import pandas as pd
from sqlalchemy import create_engine
#初始化数据库连接,使用pymysql模块
#MvSQL的用户: root,密码:147369,端口: 3306,数据库: test
engine = create_engine('mysql+pymysql://root:123456@localhost:3306/test')
#查询语句,选出employee表中的所有数据
sql = ''' select * from employee;'''
#read_sql_query的两个参数: sql语句,数据库连接
df = pd.read_sql_query(sql,engine)
# 输出employee表的查询结果
print(df)
2.Series序列对象
利用pandas库从外部读取数据到python中形成的表格叫做DataFrame表格对象。
Series序列对象即DataFrame表格对象中的某一列数据。
Series序列对象简称序列对象,其数据类型是Series。
通过表格对象获取:
df=pd.read_excel(’../数招集/新能源汽车行驶里程表.xlsx')
获取序列对象的方法
从表格对象中提取序列对象:表格对象['列名称']
df['启动时间']
手动生成一个序列对象:pd.Series(列表对象)类生成
通过pd.Series类生成
series=pd.Series(['a','b','c'])
series
运行结果:
Series序列对象的属性
属性 | 含义 |
values | 元素(值) |
index | 索引 |
name | 名称 |
dtypes | 元素类型 |
size | 元素个数 |
ndim | 维度数 |
shape | 数据形状(行列数目) |
通过pd.Series类生成
series = pd.series(["a', "b',"c'])
series
print(series.values) # 值
print(series.index) # 索引
print(series.name) #名称
print(series.dtypes) # 数据类型
print(series.size) # 数据个数
Series序列对象中局部数据的访问方法
1.通过序列单个索引访问:序列对象[索引]
2.通过序列索引的切片访问:序列对象[索引1:索引2]
3.通过判断条件访问:
序列对象[序列对象 逻辑判断符号 闽值]
series = pd.Series(['a','b','c'])
print(series)
print('-'*20)
print(series[0])
print('-'*20)
print(series[0:2])
print('-'*20)
print(series[series!=' a'])
Series序列对象的运算
序列对象和数字或者另一个序列之间可以进行基本的运算
series = pd.Series([1, 2, 3])
print(’序列对象:\n’series)
print(’加法运算:\n’,series+10)
print(’乘法运算:\n’,series*10)
print(’两个序列对象的运算:\n’,series*6+series*4)
print(’字符串序列加法运算:\n’,series.astype(str)+'天')
print(’判断运算:\n’,series==2)
Series序列对象常用方法
astype()
转换序列对象中元素的数据类型
value_counts()
用于统计序列中每个元素值出现了多少次
注意:返回值也是一个序列对象
series = pd.Series([1,2, 3,3])
print(series)
print(series.value_counts())
运行结果:
sort_values()
对序列中的数据进行排序
注意:返回的新序列对象对象中索引排序被打乱了
series = pd.Series([1,2,5,3,4])
print(series)
print(series.sort_values ())
rank()
返回序列中数据大小的排名
注意:返回的是一个序列对象,索引和原序列相同
series = pd.Series([1, 100,10])
print(series)
print(series.rank())
print(series.rank(ascending=False))
round()
控制数字型序列的小数点位
series = pd.Series([1/3,1/6,1/8])
print(series)
print(series.round(2))
序列对象.str.方法名()
一系列用于批量处理字符串序列对象中元素的方法
注意:返回序列对象
方法 | 功能 |
str.contains() | 判断序列中各元素是否包含某个字符 |
str.split() | 根据特定字符分割序列中各字符串 |
str.replace() | 批量替换序列中所有元素中的某字符串 |
str.count() | 统计序列中各元素中某字符的出现次数 |
agg()
对序列对象的元素进行加工的方法
注意:返回序列对象
语法:
1.序列对象.agg(lambda x:关于x的返回值)
2.序列对象.agg(定义好的加工函数)
series = pd.Series([’15岁’,’20岁’,’30岁’])
print('原序列:\n',series)
series2 = series.agg(lambda x:int(x.split('岁')[0]))
print(’提取数字序列:\n’,series2)
series3 = series2.agg(lambda x:’成年’ if x>18 else '未成年')
print(’加工为是否成年序列:\n’,series3)
max()/min()/mean()/median()/count()/var()/...
计算数字型序列对象中所有元素的统计量
方法 | 功能 |
max() | 求序列元素的最大值 |
min() | 求序列元素的最小值 |
mean() | 求序列元素的平均值 |
median() | 求序列元素的中位数 |
count() | 求序列元素的个数 |
mode() | 求序列元素的众数 |
var() | 求序列元素的方差 |
quantile() | 求序列元素的分位数 |
3.DataFrame表格对象
导入数据库表格或者excel数据时形成的数据对象就是表格对象。
表格对象的类型:DataFrame
表格对象的组成部分
表格对象的主要组成部分有3个:1.数据 (values)2.索引 (index)3.列名称 (columns)
创建表格对象的方法
可以通过pandas库中的DataFrame0类来创建一个表格对象
通过DataFrame0类的参数columns来设置表格对象的列名称
df = pd.DataFrame(
[[’张三’,’男’],[’李四’,’女’]],
columns=[’姓名’,’性别’]
)
df
运行结果:
表格对象的属性:
属性 | 含义 |
values | 元素 |
index | 索引 |
columns | 列名 |
dtypes | 元素类型 |
size | 元素个数 |
ndim | 维度数 |
shape | 数据形状(行列数目) |
表格对象的基本方法
head(): 返回前5行数据,用于概览
info():查看表格对象行列数、各列的数据类型和非空值数量
describe():对表格对象中的数字型序列进行各类统计量的计算
rename():修改表格对象的列名称
to_excel():将表格对象导出成excel
表格对象的增删查改
表格对象的数据查询
通过序列对象查询数据:
访问单列:表格名称[序列名称][索引]
访问多列: 表格名称[[序列名称1,序列名称2”....]][索引]
loc方法:
调用语法:表格对象loc[n,列名称]
n表示行索引,表示访问第n行
列名称’表示列索引,表示访问相应的列
iloc方法:
调用语法:表格对象.iloc[n,m]
n表示行索引,表示访问第n行
m表示列索引,表示访问第m列
表格对象数据的条件查询
条件查询即查询满足一定条件的数据 (行)
一般有两种方法实现条件查询:
1.表格对象query(查询条件字符串)
2.表格对象.loc[条件序列对象+逻辑判断,列索引]
表格对象索引重置
表格对象的默认索引为从0开始的连续数字索引
当使用条件查询等对部分行数据进行筛选的方法时,会导致新的表格对象的索引不连续
索引不连续时,索引n不再表示第n+1行数据
所以需要把索引重置为从0开始的连续数字索引
也可以以某一列数据作为新的索引
语法格式: 表格对象.set index(列名称)
语法格式: 表格对象.reset index(drop=False,inplace=False)
drop参数: 接收布尔值,表示是否保留原索引,默认保留
表格对象数据的新增
概念:表格对象数据新增一般指新增一列
思路:将一个序列对象赋值给表格对象新的一列
语法: 表格对象['新的列名'] = 某个序列对象
注意:新的列名不能和表格对象中已有的列名重复
表格对象数据的删除
概念:表格对象行或列数据的删除
语法: 表格对象.drop(n,axis=0)
参数n表示行或列的索引
axis默认为0,表示删除行,axis=1时删除列
表格对象数据的修改
思路:先访问,后赋值
语法:访问某个元素的代码 = 需要赋予的值
注意:赋值需要使用 =,不是==,==是判断符号
总结:Python可视化是一种通过图形和图表呈现数据的强大工具,可以帮助我们更好地理解和分析数据。它利用各种绘图库,如Matplotlib、Seaborn和Plotly,提供丰富的绘图函数和样式,可以轻松创建高质量的静态、动态和交互式图表。