Python(Pandas)数据分析学习

1.Pandas基本构成

引入Pandas

import pandas as pd

1.Series 行

对应Excel中的一行数据,一维数据

定义Series

# 第一个参数是具体数据
# 第二个参数的对应的索引下标
# 第三个参数的行名称
data = pd.Series([1,2,3,4,5], index=['a','b','c','d','e'], name='data')
print(data)
# 输出Series对象的索引
print(data.index)
# 输出Series对象里面索引为 'a'的值
print(data['a'])

执行结果:

2.DataFrame 表

对应Excel表,二维数据,类似于二维数组,由Series组成

定义DataFrame

# 定义DataFrame
# 先定义单独的每一行
s1 = pd.Series([1, 2, 3, 4, 5], index=['a','b','c','d','e'], name='A')
s2 = pd.Series([10, 20, 30, 40, 50], index=['a','b','c','d','e'], name='B')
s3 = pd.Series([100, 200, 300, 400, 500], index=['a','b','c','d','e'], name='C')
df = pd.DataFrame([s1, s2, s3])
print(df)
# 字典方式定义
# 输出结果与上方 行列颠倒
df2 = pd.DataFrame({s1.name: s1, s2.name: s2, s3.name: s3})
print(df2)

执行结果:

2.Pandas基本操作

1.读取写入数据 

1.读取数据

import pandas as pd# 读取
# pandas读取时会自动跳过空行
# header参数可以指定跳过哪一行
# 读取时会产生默认的索引
file_path = "test.xlsx"
data = pd.read_excel(file_path, header=2, sheet_name="Sheet1")
print(data)# index_col 指定索引列
# dtype 转换指定列的数据类型
data1 = pd.read_excel(file_path, sheet_name="Sheet1", index_col='name', dtype={"age": int})
print(data1)

执行结果

2.写入数据

# 写入
df = pd.DataFrame({"id": [1, 2, 3, 4, 5],"name": ["张三", "李四", "王五", "刘大", "关二"],"age": [10, 20, 30, 40, 50]
})
# 自定义索引
df = df.set_index("id")
df.to_excel("test.xlsx")

如果写入时to_excel方法报错,则下载openpyxl解决

from openpyxl import Workbook

执行结果:

 2.对数据进行排序

import pandas as pd# 读取文件
people = pd.read_excel('test.xlsx', index_col="id")
# by 根据哪一列进行排序
# inplace 是否用排序后的数据集替换原来的数据,默认为False,即不替换
# ascending 是否按照升序排序,默认升序,False为降序
# na_position 设定缺失值的显示位置 first lase
people.sort_values(by="age", inplace=True, ascending=False, na_position="first")
print(people)# 根据多个列进行排序
peoples = pd.read_excel('test.xlsx', index_col="id")
peoples.sort_values(by=["age", "name"], ascending=[True, False], inplace=True)
print(peoples)

3.数据过滤

读取列或行数据时,其索引必须存在,否则报错

import pandas as pdpeople = pd.read_excel("test.xlsx", index_col="id")
# 判断数据行中是否有缺省值
print(people.isnull().any)
# 删除数据中的缺省值
people.dropna(inplace=True)
# 过滤数据中符合条件的数据
# [] 里面直接写条件
result = people[(people["name"] == "张三") & (people["age"] >= 10)]
print(result)# 定义一个函数
def age_10_to_50(a):return 10 <= a <= 50def score_10_to_50(a):return 0 <= a <= 60# loc方法是读取文件行列数据的方法,可以读取指定行,列,区域的数据
result_10_to_50 = people[people["name"] == "张三"].loc[people["age"].apply(age_10_to_50)].loc[people["score"].apply(score_10_to_50)]
print(result_10_to_50)

4.Excel数据拆分

本质还是使用了字符串的split方法

import pandas as pdpeople = pd.read_excel("test.xlsx", index_col="id")# 将name拆分
df = people["name"].str.split(expand=True)
# 保存拆分出来的数据 保存前全部表中有这两列
people["姓氏"] = df[0]
people["名字"] = df[1]
print(people)

5.多表联合操作

import pandas as pdstudent = pd.read_excel("test.xlsx")
score = pd.read_excel("test1.xlsx")
age = pd.read_excel("test2.xlsx")# how 指定连接方式,默认inner 内连, left,right,outer 类似数据库多表查询
# on 用于连接的列名,必须同时存在与左右两个DataFrame对象中
# left_on,right_on 左右测用于连接的列
# left_index,right_index 如果为True,则使用左右侧的行索引作为其连接键
# sort 是否按照字典顺序通过连接键对结果DataFrame排序
# suffixes 用于重叠列的字符串后缀元组
# copy 是否总是从传递的DataFrame对象复制数据,默认为True
# indicator 如果为True,则添加一个名为_merge的特殊列,显示每列的合并信息
# fillna() 如果单元格为空,则填充指定数据
table = student.merge(score, how='left', on="id").fillna(0)
table["分数"] = table["分数"].astype(int)table2 = table.merge(age, how='left', on="id").fillna(0)
table2["年龄"] = table2["年龄"].astype(int)print(table2)

6.统计运算

import pandas as pddf = pd.DataFrame([[1, 2, 3], [2, 2, 3], [3, 3, 3]], columns=['A', 'B', 'C'])
print(df)# 求某一行平均数或列
# mean 计算平均值方法
# axis 0:按列计算 1:按行计算
# skipna:是否忽略缺失值,默认为True
print(df.mean(axis=1))
# drop 删除指定标签的行或列
# axis 0:删除索引 1:删除列
# inplace False:返回一个副本 True:在原地删除并返回None
print(df.drop("A", axis=1))people = pd.read_excel("test1.xlsx")
columns_name = ["A", "B", "C"]
# 对行求平均值,总和
row_mean = people[columns_name].mean(axis=1)
row_sum = people[columns_name].sum(axis=1)
total = "总分"
average = "平均分"
people[total] = row_sum
people[average] = row_mean
columns_name += [total, average]
# 对列求平均值
col_mean = people[columns_name].mean()
# 给结果行中加个名字
col_mean["名称"] = "Summary"
people = people._append(col_mean, ignore_index=True)
print(people)

7.数据可视化

设置字体部分很重要

import pandas as pd
import matplotlib
import matplotlib.pyplot as plt# 设置显示中文字体 黑体 重要
matplotlib.rcParams["font.sans-serif"] = ["SimHei"]
# 设置正常显示符合
matplotlib.rcParams["axes.unicode_minus"] = False# 解决matplotlib版本与pandas冲突
matplotlib.use("TkAgg")
# matplotlib 常用绘图工具students = pd.read_excel("test1.xlsx")
name = "名称"
score = "分数"
age = "年龄"
students.sort_values(by=score, inplace=True, ascending=False)
# 绘制图片
plt.bar(students[name], students[score], color="blue")
# 设置标题
plt.title("Student Score", fontsize=16)
# 设置X轴与Y轴的名称
plt.xlabel("Name", fontsize=16)
plt.ylabel("Score", fontsize=16)
# 将指定的列的数据旋转90度
plt.xticks(students[name], rotation=90, fontsize=16)
plt.tight_layout()
# 展示
plt.show()# 绘制折线图  上方为柱状图
students.plot(y=[score, age])
plt.title("学生的分数")
plt.xticks(students.index)
plt.show()# 散点图
students.plot.scatter(x=score, y=age)
plt.title("学生的分数年龄")
plt.ylabel("分数")
plt.xlabel("年龄")
plt.show()

输出结果:

柱状图部分

折线图部分

散点图部分

8.读写word文档

from docx import Document# 创建文件
document = Document()
document.save("new.docx")# 读取文件
doc = Document("new.docx")
# 循环段落
for paragraph in doc.paragraphs:print(paragraph.text)# 将文字写入到word文档中
doc1 = Document()
# 添加标题
doc1.add_heading("一级标题", level=1)
# 添加段落
p2 = doc1.add_paragraph("第二个段落")
p1 = p2.insert_paragraph_before("第一个段落")
p3 = doc1.add_paragraph("新段落")
# 增加文字内容
p3.add_run("加粗").bold = True
p3.add_run("以及")
p3.add_run("斜体").italic = True
doc1.save("new1.docx")

输出结果:

9.word写入图片

from docx import Document
from docx.shared import Inchesdoc = Document()
doc.add_picture("p.png", width=Inches(1.25))
doc.save("new2.docx")

10.word写入表格

from docx import Document
from docx.shared import Inchesdoc = Document()
# 创建table 设置行列数量
table = doc.add_table(rows=3, cols=3)
# 设置table的样式
table.style = "Table Grid"
# 获取单元格
cell = table.cell(0, 1)
# 设置单元格文本
cell.text = "第一行第二列"
p = cell.paragraphs[0]
run = p.add_run()
run.add_picture("img.png", width=Inches(2))doc.save("new3.docx")

11.xlrd读取excel表格数据

注意版本使用

import xlrd# xlrd新版本只支持读取xls文件,读取xlsx文件需要降为1.2.0版本
data = xlrd.open_workbook("test1.xlsx")
print(data)# 获取第一个sheet页 三种方法
sheet = data.sheets()[0]
sheet = data.sheet_by_index(0)
sheet = data.sheet_by_name("Sheet1")
print(sheet)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/894449.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我用Ai学Android Jetpack Compose之Card

这篇学习一下Card。回答来自 通义千问。 我想学习Card&#xff0c;麻烦你介绍一下 当然可以&#xff01;在 Jetpack Compose 中&#xff0c;Card 是一个非常常用的组件&#xff0c;用于创建带有阴影和圆角的卡片式布局。它可以帮助你轻松实现美观且一致的 UI 设计&#xff0c…

图漾相机——C++语言属性设置

文章目录 前言1.SDK API功能介绍1.1 Device组件下的API测试1.1.1 相机工作模式设置&#xff08;TY_TRIGGER_PARAM_EX&#xff09;1.1.2 TY_INT_FRAME_PER_TRIGGER1.1.3 TY_INT_PACKET_DELAY1.1.4 TY_INT_PACKET_SIZE1.1.5 TY_BOOL_GVSP_RESEND1.1.6 TY_BOOL_TRIGGER_OUT_IO1.1.…

STM32 TIM定时器配置

TIM简介 TIM&#xff08;Timer&#xff09;定时器 定时器可以对输入的时钟进行计数&#xff0c;并在计数值达到设定值时触发中断 16位计数器、预分频器、自动重装寄存器的时基单元&#xff0c;在72MHz计数时钟下可以实现最大59.65s的定时 不仅具备基本的定时中断功能&#xff…

pytorch实现基于Word2Vec的词嵌入

PyTorch 实现 Word2Vec&#xff08;Skip-gram 模型&#xff09; 的完整代码&#xff0c;使用 中文语料 进行训练&#xff0c;包括数据预处理、模型定义、训练和测试。 1. 主要特点 支持中文数据&#xff0c;基于 jieba 进行分词 使用 Skip-gram 进行训练&#xff0c;适用于小数…

【数据结构】_链表经典算法OJ(力扣/牛客第二弹)

目录 1. 题目1&#xff1a;返回倒数第k个节点 1.1 题目链接及描述 1.2 解题思路 1.3 程序 2. 题目2&#xff1a;链表的回文结构 2.1 题目链接及描述 2.2 解题思路 2.3 程序 1. 题目1&#xff1a;返回倒数第k个节点 1.1 题目链接及描述 题目链接&#xff1a; 面试题 …

pytorch基于 Transformer 预训练模型的方法实现词嵌入(tiansz/bert-base-chinese)

以下是一个完整的词嵌入&#xff08;Word Embedding&#xff09;示例代码&#xff0c;使用 modelscope 下载 tiansz/bert-base-chinese 模型&#xff0c;并通过 transformers 加载模型&#xff0c;获取中文句子的词嵌入。 from modelscope.hub.snapshot_download import snaps…

爬虫基础之爬取某站视频

目标网址:为了1/4螺口买小米SU7&#xff0c;开了一个月&#xff0c;它值吗&#xff1f;_哔哩哔哩_bilibili 本案例所使用到的模块 requests (发送HTTP请求)subprocess(执行系统命令)re (正则表达式操作)json (处理JSON数据) 需求分析: 视频的名称 F12 打开开发者工具 or 右击…

DeepSeek R1本地化部署 Ollama + Chatbox 打造最强 AI 工具

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;Linux 目录 一&#xff1a;&#x1f525; Ollama &#x1f98b; 下载 Ollama&#x1f98b; 选择模型&#x1f98b; 运行模型&#x1f98b; 使用 && 测试 二&#xff1a;&#x1f525; Chat…

【linux网络(5)】传输层协议详解(下)

目录 前言1. TCP的超时重传机制2. TCP的流量控制机制3. TCP的滑动窗口机制4. TCP的拥塞控制机制5. TCP的延迟应答机制6. TCP的捎带应答机制7. 总结以及思考 前言 强烈建议先看传输层协议详解(上)后再看这篇文章. 上一篇文章讲到TCP协议为了保证可靠性而做的一些策略, 这篇文章…

DeepSeek 遭 DDoS 攻击背后:DDoS 攻击的 “千层套路” 与安全防御 “金钟罩”

当算力博弈升级为网络战争&#xff1a;拆解DDoS攻击背后的技术攻防战——从DeepSeek遇袭看全球网络安全新趋势 在数字化浪潮席卷全球的当下&#xff0c;网络已然成为人类社会运转的关键基础设施&#xff0c;深刻融入经济、生活、政务等各个领域。从金融交易的实时清算&#xf…

二、CSS笔记

(一)css概述 1、定义 CSS是Cascading Style Sheets的简称,中文称为层叠样式表,用来控制网页数据的表现,可以使网页的表现与数据内容分离。 2、要点 怎么找到标签怎么操作标签对象(element) 3、css的四种引入方式 3.1 行内式 在标签的style属性中设定CSS样式。这种方…

第三篇:模型压缩与量化技术——DeepSeek如何在边缘侧突破“小而强”的算力困局

——从算法到芯片的全栈式优化实践 随着AI应用向移动终端与物联网设备渗透&#xff0c;模型轻量化成为行业核心挑战。DeepSeek通过自研的“算法-编译-硬件”协同优化体系&#xff0c;在保持模型性能的前提下&#xff0c;实现参数量与能耗的指数级压缩。本文从技术原理、工程实…

C++编程语言:抽象机制:泛型编程(Bjarne Stroustrup)

泛型编程(Generic Programming) 目录 24.1 引言(Introduction) 24.2 算法和(通用性的)提升(Algorithms and Lifting) 24.3 概念(此指模板参数的插件)(Concepts) 24.3.1 发现插件集(Discovering a Concept) 24.3.2 概念与约束(Concepts and Constraints) 24.4 具体化…

DeepSeek-R1本地部署实践

一、下载安装 --Ollama Ollama是一个开源的 LLM&#xff08;大型语言模型&#xff09;服务工具&#xff0c;用于简化在本地运行大语言模型&#xff0c;降低使用大语言模型的门槛&#xff0c;使得大模型的开发者、研究人员和爱好者能够在本地环境快速实验、管理和部署最新大语言…

AI技术路线(marked)

人工智能&#xff08;AI&#xff09;是一个非常广泛且充满潜力的领域&#xff0c;它涉及了让计算机能够执行通常需要人类智能的任务&#xff0c;比如感知、推理、学习、决策等。人工智能的应用已经渗透到各行各业&#xff0c;从自动驾驶到医疗诊断&#xff0c;再到推荐系统和自…

【leetcode详解】T598 区间加法

598. 区间加法 II - 力扣&#xff08;LeetCode&#xff09; 思路分析 核心在于将问题转化&#xff0c; 题目不是要求最大整数本身&#xff0c;而是要求解最大整数的个数 结合矩阵元素的增加原理&#xff0c;我们将抽象问题转为可操作的方法&#xff0c;其实就是再找每组ops中…

【最后203篇系列】004 -Smarklink

说明 这个用来替代nginx。 最初是希望用nginx进行故障检测和负载均衡&#xff0c;花了很多时间&#xff0c;大致的结论是&#xff1a;nginx可以实现&#xff0c;但是是在商业版里。非得要找替代肯定可以搞出来&#xff0c;但是太麻烦了&#xff08;即使是nginx本身的配置也很烦…

完全卸载mysql server步骤

1. 在控制面板中卸载mysql 2. 打开注册表&#xff0c;运行regedit, 删除mysql信息 HKEY_LOCAL_MACHINE-> SYSTEM->CurrentContolSet->Services->EventLog->Application->Mysql HKEY_LOCAL_MACHINE-> SYSTEM->CurrentContolSet->Services->Mysql …

1. 【.NET Aspire 从入门到实战】--理论入门与环境搭建--引言

在当前软件开发领域&#xff0c;云原生和微服务架构已经成为主流趋势&#xff0c;传统的单体应用正逐步向分布式系统转型。随着业务需求的不断变化与用户规模的迅速扩大&#xff0c;如何在保证高可用、高扩展性的同时&#xff0c;还能提高开发效率与降低维护成本&#xff0c;成…

Ubuntu 22.04系统安装部署Kubernetes v1.29.13集群

Ubuntu 22.04系统安装部署Kubernetes v1.29.13集群 简介Kubernetes 的工作流程概述Kubernetes v1.29.13 版本Ubuntu 22.04 系统安装部署 Kubernetes v1.29.13 集群 1 环境准备1.1 集群IP规划1.2 初始化步骤&#xff08;各个节点都需执行&#xff09;1.2.1 主机名与IP地址解析1.…