【学习笔记】Python大数据处理与分析——pandas数据分析

news2024/10/6 3:00:27

一、pandas中的对象

1、Series对象

        由两个相互关联的数组(values, index)组成,前者(又称主数组)存储数据,后者存储values内每个元素对应关联的标签。

import numpy as np
import pandas as pd

s1 = pd.Series([1, 3, 5, 7])

print(s1)
→0    1
 1    3
 2    5
 3    7
 dtype: int64

print(s1.values)
→[1 3 5 7]

print(s1.index)
→RangeIndex(start=0, stop=4, step=1)

        通过NumPy数组导入Series对象:

arr1 = np.array([1, 3, 5, 7])
s2 = pd.Series(arr1, index=['a', 'b', 'c', 'd'])
s2_ = pd.Series(s2)

print(s2)
→a    1
 b    3
 c    5
 d    7
 dtype: int32

print(s2_)
→a    1
 b    3
 c    5
 d    7
 dtype: int32

        若index数组的值在字典中有对应的键,则生成的Series中对应的元素是字典中对应的值(如果没有,其值为NaN空值)。

dict1 = {"a": 3, "b": 4, "c": 5}
s3 = pd.Series(dict1, index=["a", "b", "c", "d"])

print(s3)
→a    3.0
 b    4.0
 c    5.0
 d    NaN
 dtype: float64

2、DataFrame对象

        将Series的使用场景扩展到多维,由按一定顺序的多列数据(可不同类型)组成,有两个索引数组(index, columns)。

dict2 = {"a": [1, 2, 3, 4], "b": [5, 6, 7, 8], "c": [9, 10, 11, 12]}
df1 = pd.DataFrame(dict2)

print(df1)
→  a  b   c
0  1  5   9
1  2  6  10
2  3  7  11
3  4  8  12

df2 = pd.DataFrame(np.arange(16).reshape((4, 4)),
                   index=["one", "two", "three", "four"],
                   columns=["ball", "pen", "pencil", "paper"])

print(df2)
→      ball  pen  pencil  paper
one       0    1       2      3
two       4    5       6      7
three     8    9      10     11
four     12   13      14     15

二、pandas的基本操作

1、导入与导出数据

(1)csv文件导入

        函数原型read_csv(filepath, sep, names, encoding),参数分别为:导入csv文件的路径、分隔符、导入的列和指定列的顺序(默认按顺序导入所有列)和文件编码(一般为utf-8)。

(2)txt文件导入

        read_table()的参数与read_csv()一样,但txt文件的分隔符不确定,所以参数设置需要更严格准确。

(3)Excel文件导入

        read_excel()的参数只有三个:路径名、读取表格名和读取列名,一般只需要第一个。

        示例如下,其中data.csv的内容如下:

        data.txt的内容如下:

        data.xlsx的内容如下:

df3 = pd.read_csv(r"D:\Pycharm professional\pythonProject\test_pandas_files\data.csv")

print(df3)
→   0   1   2
0   1   2   3
1   4   5   6
2   7   8   9
3  10  11  12

df4 = pd.read_table(r"D:\Pycharm professional\pythonProject\test_pandas_files\data.txt", sep=' ', header=None)

print(df4)
→  0   1
0  1   2
1  3   4
2  5   6
3  7   8
4  9  10

df5 = pd.read_excel(r"D:\Pycharm professional\pythonProject\test_pandas_files\data.xlsx")

print(df5)
→  0  1  2  3
0  a  b  c  d
1  e  f  g  h
2  i  j  k  l

 (4)数据导出

        函数原型为to_csv(filepath, sep, names, encoding),参数分别为:导出csv文件的路径、分隔符(默认为逗号)、是否输出索引(默认为True,即输出索引)和文件编码(一般为utf-8)。

df3.to_csv(r"D:\Pycharm professional\pythonProject\test_pandas_files\data1.csv", index=True, header=True)
df3.to_csv(r"D:\Pycharm professional\pythonProject\test_pandas_files\data2.csv", index=False, header=True)

        data1.csv的内容如下: 

        data2.csv的内容如下: 

2、数据的查看与检查

(1)Series对象

print(s1[2])
→5

print(s2['c'])
→5

print(s2[0:2])
→a    1
 b    3
 dtype: int32

print(s2[['a', 'b']])
→a    1
 b    3
 dtype: int32

(2)DataFrame对象

print(df2.columns)
→Index(['ball', 'pen', 'pencil', 'paper'], dtype='object')

print(type(df2.columns))
→<class 'pandas.core.indexes.base.Index'>

print(df2.index)
→Index(['one', 'two', 'three', 'four'], dtype='object')

print(type(df2.index))
→<class 'pandas.core.indexes.base.Index'>

print(df2.values)
→[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [12 13 14 15]]

print(type(df2.values))
→<class 'numpy.ndarray'>

print(df2["pencil"])
→one       2
 two       6
 three    10
 four     14
 Name: pencil, dtype: int32

print(df2.pen)
→one       1
 two       5
 three     9
 four     13
 Name: pen, dtype: int32

print(df2[0:2])
→    ball  pen  pencil  paper
one     0    1       2      3
two     4    5       6      7

3、数据的增删查改

        创建Series对象如下:

s4 = pd.Series([1, 3, 5, 7], index=['a', 'b', 'c', 'd'])

(1)增加

s4['e'] = 9
print(s4)
→a    1
 b    3
 c    5
 d    7
 e    9
 dtype: int64

(2)删除

s4.pop('e')
print(s4)
→a    1
 b    3
 c    5
 d    7
 dtype: int64

print(s4.drop('c'))
→a    1
 b    3
 d    7
 dtype: int64

print(s4)
→a    1
 b    3
 c    5
 d    7
 dtype: int64

(3)查找与修改

s4[2] = 6
s4['a'] = 0
print(s4)
→a    0
 b    3
 c    6
 d    7
 dtype: int64

print(s4[s4 > 4])
→c    6
 d    7
 dtype: int64

df2["pencil"][1] = 12
print(df2)
→      ball  pen  pencil  paper
one       0    1       2      3
two       4    5      12      7
three     8    9      10     11
four     12   13      14     15

4、pandas的基本运用

(1)数据统计

        创建DataFrame对象如下:

arr2 = np.array([1, 2, 3, 4, 5, 6, 7, 8]).reshape(4, 2)
df6 = pd.DataFrame(arr2, index=['a', 'b', 'c', 'd'], columns=['one', 'two'])
print(df6)
→  one  two
a    1    2
b    3    4
c    5    6
d    7    8
① 求和
print(df6.sum())
→one    16
 two    20
 dtype: int64

print(df6.sum(axis=1))
→a     3
 b     7
 c    11
 d    15
 dtype: int64
② 累计求和
print(df6.cumsum())
→  one  two
a    1    2
b    4    6
c    9   12
d   16   20
③ 返回最值行名称
print(df6.idxmax())
→one    d
 two    d
 dtype: object

print(df6.idxmin())
→one    a
 two    a
 dtype: object
④ 去重

        unique()返回NumPy数组,value_counts()返回Series对象(index为不重复的元素,values为不重复元素的频数)。

s5 = pd.Series([1, 3, 5, 7, 2, 4, 3, 5, 7, 6, 7])

print(s5.unique())
→[1 3 5 7 2 4 6]

print(type(s5.unique()))
→<class 'numpy.ndarray'>

print(s5.value_counts())
→7    3
 3    2
 5    2
 1    1
 2    1
 4    1
 6    1
 dtype: int64

print(type(s5.value_counts()))
→<class 'pandas.core.series.Series'>
⑤ 筛选数据

        isin()判定Series对象中每个元素是否包含在给定的参数中。

print(s5.isin([2, 4]))
→0     False
 1     False
 2     False
 3     False
 4      True
 5      True
 6     False
 7     False
 8     False
 9     False
 10    False
 dtype: bool

print(s5[s5.isin([2, 4])])
→4    2
 5    4
 dtype: int64

(2)算术运算

s6 = pd.Series([20, 40, 60, 80])

print(s6 / 2)
→0    10.0
 1    20.0
 2    30.0
 3    40.0
 dtype: float64

print(np.log(s6))
→0    2.995732
 1    3.688879
 2    4.094345
 3    4.382027
 dtype: float64

(3)数据对齐

        数据清洗的重要过程,可按索引进行对齐运算,没对齐的位置填充NaN,数据末尾也可填充NaN。

s7 = pd.Series({"b": 4, "c": 5, "a": 3})
s8 = pd.Series({"a": 1, "b": 7, "c": 2, "d": 11})

print(s7 + s8)
→a     4.0
 b    11.0
 c     7.0
 d     NaN
 dtype: float64

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

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

相关文章

数据结构排序算法

排序也称排序算法(SortAlgorithm)&#xff0c;排序是将一组数据&#xff0c;依指定的顺序进行排列的过程。 分类 内部排序【使用内存】 指将需要处理的所有数据都加载到内部存储器中进行排序插入排序 直接插入排序希尔排序 选择排序 简单选择排序堆排序 交换排序 冒泡排序快速…

【随笔】Git 高级篇 -- 远程仓库提交本地记录 git push(三十)

&#x1f48c; 所属专栏&#xff1a;【Git】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢迎大…

大学生前端学习第一天:了解前端

引言&#xff1a; 哈喽&#xff0c;各位大学生们&#xff0c;大家好呀&#xff0c;在本篇博客&#xff0c;我们将引入一个新的板块学习&#xff0c;那就是前端&#xff0c;关于前端&#xff0c;GPT是这样描述的&#xff1a;前端通常指的是Web开发中用户界面的部分&#xff0c;…

35. UE5 RPG制作火球术技能

接下来&#xff0c;我们将制作技能了&#xff0c;总算迈进了一大步。首先回顾一下之前是如何实现技能触发的&#xff0c;然后再进入正题。 如果想实现我之前的触发方式的&#xff0c;请看此栏目的31-33篇文章&#xff0c;讲解了实现逻辑&#xff0c;这里总结一下&#xff1a; …

用于半监督的图扩散网络 笔记

1 Title Graph Neural Diffusion Networks for Semi-supervised Learning&#xff08;Wei Ye, Zexi Huang, Yunqi Hong, and Ambuj Singh&#xff09;【2022】 2 Conclusion This paper proposes a new graph neural network called GND-Nets (for Graph Neural Diffu…

1W 6KVDC 隔离双输出 DC/DC 电源模块 ——TPJ 系列

TPJ一款有超高隔离电压的电源模块&#xff0c;主要用于医疗仪器和设备&#xff0c;特别在安全设备的应用中起着相当重要的作用&#xff0c; 它的绝缘设计完全能满足对隔离电压要求超过6000V的应用&#xff0c;在额定负载1W的情况下&#xff0c;工作温度范围为–40℃到 105℃&am…

转换为elementUI提示方法为uni-app的showToast提示

// 转换为elementUI提示方法为uni-app的showToast提示---------------------------------------- // 一般提示 Vue.prototype.$message function(title) {title && uni.showToast({icon: none,title}); }; // 成功提示 Vue.prototype.$message.success (title) > …

项目管理利器 Git

一、序言 今天聊聊 Git。 二、开发的问题 在开发项目时&#xff0c;我们的代码都是直接放在本地的机器上的。如果本地机器出现了问题&#xff0c;怎么办&#xff1f;在企业中&#xff0c;开发项目都是团队协作&#xff0c;一个团队共同维护一个项目该如何处理&#xff1f;团…

采用4G、5G实现无线视频监控,流量过大费用高,如何降低网络流量?

目录 一、高清视频监控中使用的4G和5G介绍 &#xff08;一&#xff09;4G物联网卡&#xff1a; 1、数据传输与稳定性 2、应用与优势 &#xff08;二&#xff09;5G物联网卡&#xff1a; 1、数据传输与速率 2、应用场景 二、4G/5G流量池 三、视频监控的流量使用 …

rk3588 安卓调试

rknn装上了android系统&#xff0c;用type-c usb连接上电脑&#xff0c;设备管理器发现了rk3588&#xff0c;但是Android Studio没有发现设备 后来怀疑是驱动没有安装&#xff0c;我用的驱动下载地址&#xff1a; 瑞芯微Rockchip驱动安装助手(适用于RK3308 RK3399等) Mcuzone…

SSH协议的优缺点

SSH&#xff08;Secure Shell&#xff09;是一种用于在计算机网络上进行安全远程访问和执行命令的协议。提供加密通信通道&#xff0c;防止敏感信息在传输过程中被窃听或篡改。SSH还支持文件传输和端口转发等功能&#xff0c;使其成为广泛使用的安全远程管理工具。 1. 安全远程…

Centos7下载配置jdk18与maven3.9.6【图文教程】

个人记录 进入目录 cd /usr/local/JDK下载与配置 OpenJDK官网 下载安装 wget https://download.java.net/openjdk/jdk18/ri/openjdk-1836_linux-x64_bin.tar.gz解压 tar -zxvf openjdk-1836_linux-x64_bin.tar.gz ls ls jdk-18/编辑配置文件 vim /etc/profile配置环境变…

YOLOv8 目标检测项目实操

一 yolov8 背景介绍 YOLOv8是一种尖端的、最先进的(SOTA)模型&#xff0c;建立在以前 YOLO 版本的成功基础上&#xff0c;并引入了新的特性和改进&#xff0c;以进一步提高性能和灵活性。YOLOv8被设计为快速、准确、易于使用&#xff0c;这使它成为一个很好的选择&#xff0c;…

如何在企业微信中更换新的企业主体

企业微信变更主体有什么作用&#xff1f; 做过企业运营的小伙伴都知道&#xff0c;很多时候经常会遇到现有的企业需要注销&#xff0c;切换成新的企业进行经营的情况&#xff0c;但是原来企业申请的企业微信上面却积累了很多客户&#xff0c;肯定不能直接丢弃&#xff0c;所以这…

IDM2024破解版 IDM软件破解注册序列号 idm教程 idm序列激活永久授权 Internet Download Manager网络下载加速神器

你是不是感觉下载东西资源的时候&#xff0c;下载的非常慢&#xff0c;即便是五十兆的光纤依旧慢、是不是想下载网页上的视频但不知如何进行下载……这些问题是否一直在困扰着您&#xff0c;今日小编特意我大家带来了这款IDM 2024破解版。 众所周知&#xff0c;IDM是一款功能强…

函数模板(C++)

目录 一、介绍 二、注意事项 三、排序函数 1、交换函数模板 2、排序算法 3、打印函数 4、测试函数 四、普通函数与函数模板 区别 调用规则 五、模板局限性 六、类模板 类模板与函数模板区别 1、类模板没有自动类型推导使用方式 2、类模板在模板参数列表中可以有默认…

对桥接模式的理解

目录 一、背景二、桥接模式的demo1、类型A&#xff08;形状类型&#xff09;2、类型B&#xff08;颜色类型&#xff09;3、需求&#xff1a;类型A要使用类型B&#xff08;如&#xff1a;红色的方形&#xff09;4、Spring的方式 一、背景 在《对装饰器模式的理解》中&#xff0…

msyql中SQL 错误 [1118] [42000]: Row size too large (> 8126)

场景&#xff1a; CREATE TABLE test-qd.eqtree (INSERT INTO test.eqtree (idocid VARCHAR(50) NULL,sfcode VARCHAR(50) NULL,sfname VARCHAR(50) NULL,sfengname VARCHAR(50) NULL,…… ) ENGINEInnoDB DEFAULT CHARSETutf8 COLLATEutf8_general_ci;或 alter table eqtre…

Linux硬件管理

文章目录 Linux硬件管理1.查看磁盘空间 df -h2.查看文件的磁盘占用空间 du -ah3.查看系统内存占用情况 htop Linux硬件管理 1.查看磁盘空间 df -h 语法 df [选项][参数]选项 -a或–all&#xff1a;包含全部的文件系统&#xff1b; –block-size<区块大小>&#xff1a;…

React + Ts + Vite + Antd 项目搭建

1、创建项目 npm create vite 项目名称 选择 react 选择 typescript 关闭严格模式 建议关闭严格模式&#xff0c;因为不能自动检测副作用&#xff0c;有意双重调用。将严格模式注释即可。 2、配置sass npm install sass 更换所有后缀css为sass vite.config.ts中注册全局样式 /…