十.pandas方法总结Numpy

目录

十.pandas方法总结

1.索引切片

2.数据排序

3.数据统计

Pandas数据计算

4.数据查看

5.数据清洗

6-数据分组

查看分组结果

7-处理第三方数据

csv文件操作

Excel文件操作

Excel文件读取read_excel

Excel文件写入 to_excel()

SQL操作

mysql读取

数据保存

pandas处理字符串

数据操作

1-数据添加&插入

2-数据删除

3-重置索引&重命名标签&设置索引列

4-对象拼接

常用属性和方法汇总

numpy操作总结

1-创建ndarray对象:

2-方法总结


十.pandas方法总结


1.索引切片

slice(2, 9, 3)#从索引2开始到索引9停止,步长为2
arr_data[2:9:2]通过冒号来分割切片参数.
arr_data[1:]从[1:]索引处开始切割
arr_num[1, ...]返回数组的第二行
arr_data[[0, 1, 2], [0, 1, 0]][0,1,2]代表行索引;[0,1,0]代表列索引
# 行索引 width_data = np.array([[0, 0], [3, 3]]) # 列索引 height_data = np.array([[0, 2], [0, 2]]) new_data = arr_data[width_data, height_data]获取了 4*3 数组中的四个角上元素,它们对应的行索引是 [0,0] 和 [3,3],列索引是 [0,2] 和 [0,2]。
arr_num[1:4, [1, 2]]行使用基础索引,对列使用高级索引.
print(arr_data[arr_data > 6])返回结果大于六的数字数组
# np.isnan(x) 可以判断x是否为空值 print(arr_data[~np.isnan(arr_data)])np.nan是一个float类型的数据,表示不是一个数字
df_data["语文"]选取指定的列.
df_data.loc["张三"]选取指定的.
df_data.loc[["张三","王五","坤哥"],["语文","数学","地理"]]选取指定的行和列.
df_data.loc["张三","语文"]选取值.
df.iloc[2] .iloc[1:3, 1:4]iloc函数只能通过整数索引取值.

df_data = pd.DataFrame(np.random.randint(65,95,size=(5,6)),index=["张三","李四","王五","赵六","坤哥"],columns=["语文","数学","英语","政治","历史","地理"]
)
df_data
​
# 选取指定的列
df_data["语文"]
​
# 选取指定的行
df_data.loc["张三"]
​
# 选取指定的行和列
df_data.loc[["张三","王五","坤哥"],["语文","数学","地理"]]
​
# 选取值
df_data.loc["张三","语文"]
df.columns  #返回列表,列标签.
# 整体修改,上面复制过来直接进行修改
# df.columns = ['颜色', '姓名', 'num_critic_for_reviews', 'duration',
#               'director_facebook_likes', 'actor_3_facebook_likes', 'actor_2_name',
#               'actor_1_facebook_likes', 'gross', 'genres', 'actor_1_name',
#               'movie_title', 'num_voted_users', 'cast_total_facebook_likes',
#               'actor_3_name', 'facenumber_in_poster', 'plot_keywords',
#               'movie_imdb_link', 'num_user_for_reviews', 'language', 'country',
#               'content_rating', 'budget', 'title_year', 'actor_2_facebook_likes',
#               'imdb_score', 'aspect_ratio', 'movie_facebook_likes']
# print(df.head())
#
-----------------------------------
​
# 转化为列表之后修改
my_columns = list(df.columns)
my_columns[0] = "颜色色"
df.columns = my_columns
print(df.head())

2.数据排序

df.sort_index(ascending=True)按index排序. 默认升序,ascending=False降序
df.sort_index(axis=1)列标签排序
df.sort_values(by='col2', kind="mergesort")按值排序. 与标签排序类似,sort_values() 表示按值排序。它接受一个by参数,该参数值是要排序数列的 DataFrame 列名 sort_values() 提供了参数kind

df_data = pd.DataFrame(np.random.randint(65,95,size=(5,6)),index=[1,4,6,2,3],columns=["语文","数学","英语","政治","历史","地理"]
)
​
# 默认升序,ascending=False降序
# 根据标签进行排序
df_data.sort_index()
​
# 根据某一列值进行排序
df_data.sort_values(by="语文",ascending=False)

3.数据统计

Pandas数据计算

函数名称描述说明
count()统计某个非空值的数量。
sum()求和
mean()求均值
median()求中位数
mode()求众数
std()求标准差
min()求最小值
max()求最大值
abs()求绝对值
describe()计算基本统计信息,如均值、标准差、最小值、最大值等。

在 DataFrame 中,使用聚合类方法时需要指定轴(axis)参数。下面介绍两种传参方式:

  • 对行操作,默认使用 axis=1 或者使用 "index";------行

  • 对列操作,默认使用 axis=0 或者使用 "columns"。-----列

df_data = pd.DataFrame(np.random.randint(65,95,size=(5,6)),index=[1,4,6,2,3],columns=["语文","数学","英语","政治","历史","地理"]
)
​
# 计算基本统计信息,如均值、标准差、最小值、最大值等。
df_data.describe()
​
# 计算每列的平均值。
df_data.mean()
​
# 计算每列的中位数。
df_data.median()
​
# 计算每列非缺失值的数量。
df_data.count()

4.数据查看

函数说明
df.head(n)显示前 n 行数据;
df.tail(n)显示后 n 行数据;
df.info()显示数据的信息,包括列名、数据类型、缺失值等;
df.describe()显示数据的基本统计信息,包括均值、方差、最大值、最小值等;
df.shape显示数据的行数和列数。
query(" ")# 按条件筛选 # df_data.query("(A>10) and (B>12)") # 筛选指定列 # df_data.query("(A>10) & (B>12)")[["demo","C","D"]] # 筛选某一列 # df_data[df_data["demo"] == "python"] # df_data.query('demo == "python"')
isin()返回bool类型.xxx.xxx.isin()
apply()df_data.apply(lambda x:x.sum()-x.max(),axis="index")
df_data.info()显示df_data的基础信息

5.数据清洗

函数说明
df.dropna()删除包含缺失值的行或列; DataFrame.dropna(axis=0, how=‘any’, thresh=None, subset=None, inplace=False)
df.fillna(value)将缺失值替换为指定的值;
df.replace(old_value, new_value)将指定值替换为新值;
df.duplicated()检查是否有重复的数据;
df.drop_duplicates()删除重复的数据。
isnull()检测某一列是否为空值.
miss_value = ['--',18] data = pd.read_csv('student.csv',na_values=miss_value)自定义空值类型.
pd.to_datetime()自动修改日期格式.

6-数据分组

df_data.groupby("company").agg("mean")
#可结合数据计算一起使用
​
df_data.groupby("year")[["GDP", "year"]].mean()
df_data.groupby("country").agg({"GDP":"mean","year":"median"})
df_data.groupby("country")[["GDP", "year"]].agg(["mean","std"])
df_data.groupby(["year", "country"])[["GDP", "year"]].mean()
​
# 统计个数去重
df_data.groupby("year")[["country"]].nunique()
​
# 统计出现的国家数
df_data["country"].nunique()
​
# 统计出现的国家
df_data["country"].unique()

查看分组结果

通过调用groups属性查看分组结果.

print(df_data.groupby('year').groups)
#{1990: [2, 4], 1992: [0, 7], 1994: [8], 1995: [5], 1997: [3], 1998: [1, 6, 9]}

7-处理第三方数据

csv文件操作

read_csv()
read_json()
pd.read_csv("./number_data/student.csv", encoding="utf-8")file=r'E:/././student.csv' data=pd.read_csv(file,encoding='utf-8')
index_col在 CSV 文件中指定了一个,然后使用index_col可以实现自定义索引。 pd.read_csv("./number_data/student.csv", encoding="utf-8", index_col=["Name"])
df.dtypes查看原先的数据类型.
pd.read_csv("./number_data/student.csv", encoding="utf-8", dtype={'Salary': np.float64})转换salary为float类型(字典形式)
names 参数更改文件标头名(列的标签) pd.read_csv("./number_data/student.csv", encoding="utf-8", names=["a","b","c","d","e"]) --加上header=0参数,就会删除原有的标头名.
skiprows参数表示跳过指定的行数。 (跳过前几行!!!) skiprows=1
to_csv()data = {'Name': ['Smith', 'Parker'], 'ID': [101, 102], 'Language': ['Python', 'JavaScript']} info = pd.DataFrame(data) csv_data = info.to_csv("./number_data/student.csv")

Excel文件操作

Excel文件读取read_excel
pd.read_excel(io, sheet_name=0, header=0, names=None, index_col=None,usecols=None, squeeze=False,dtype=None, engine=None,converters=None, true_values=None, false_values=None,skiprows=None, nrows=None, na_values=None, parse_dates=False,date_parser=None, thousands=None, comment=None, skipfooter=0,convert_float=True, **kwds)
参数名称说明
io表示 Excel 文件的存储路径。
sheet_name要读取的工作表名称。
header指定作为列名的行,默认0,即取第一行的值为列名;若数据不包含列名,则设定 header = None。若将其设置 为 header=2,则表示将前两行作为多重索引。
names一般适用于Excel缺少列名,或者需要重新定义列名的情况;names的长度必须等于Excel表格列的长度,否则会报错。
index_col用做行索引的列,可以是工作表的列名称,如 index_col = '列名',也可以是整数或者列表。
usecolsint或list类型,默认为None,表示需要读取所有列。
squeezeboolean,默认为False,如果解析的数据只包含一列,则返回一个Series。
converters规定每一列的数据类型。
skiprows接受一个列表,表示跳过指定行数的数据,从头部第一行开始。
nrows需要读取的行数。
skipfooter接受一个列表,省略指定行数的数据,从尾部最后一行开始。
Excel文件写入 to_excel()
# 创建DataFrame数据
data = pd.DataFrame({'name': ['张三', '李四', '王五', '赵六'],'rank': [1, 2, 3, 4],'language': ['PHP', 'C', 'PHP', 'Python'],'url': ['www.zhangsan.com', 'c.lisi.net', 'www.wangwu.com', 'www.zhaoliu.com']})
# 创建ExcelWrite对象
writer = pd.ExcelWriter('datas.xlsx')
data.to_excel(writer)
writer.save()

SQL操作

index_col 属性充当行标签 data = pd.read_sql(sql_one, con=coon,index_col="house_five")
将数据写入Excel#创建ExcelWrite对象. writer = pd.ExcelWriter('website.xlsx') data.to_excel(writer) writer.save()

mysql读取
import pandas as pd
import pymysql
coon = pymysql.connect(host="127.0.0.1",port=3306,user="root",password=" ",db="库名"
)
sql_one = "select * from house"
print(pd.read_sql(sql_one,con=coon))
​
sql_two = "select * from house where id > 10"
print(pd.read_sql(sql_two, con=coon))

数据保存

​
df.iloc[:3, :].to_csv("./movie_new.csv")
df.iloc[:3, :].to_excel("./movie_new.xlsx",sheet_name="xxx")

pandas处理字符串

函数名称函数功能和描述
lower()将的字符串转换为小写。
upper()将的字符串转换为大写。
len()得出字符串的长度。
strip()去除字符串两边的空格(包含换行符)。
split()用指定的分割符分割字符串。
cat(sep="")用给定的分隔符连接字符串元素。
contains(pattern)如果空子字串包含在元素中,则为每个元素返回一个布尔值 True,否则为 False。
replace(a,b)将值 a 替换为值 b。
count(pattern)返回每个字符串元素出现的次数。
findall(pattern)以列表的形式返出现的字符串。
isnumeric()返回布尔值,检查 Series 中组成每个字符串的所有字符是否都为数字。
repeat(value)以指定的次数重复每个元素。
find(pattern)返回字符串第一次出现的索引位置.

数据操作

1-数据添加&插入

df[]=value插入到最后面.# 添加列(存在进行修改,不存在进行添加.)
insert() df.insert(1, column='score', value=[91, 90, 75])第一个参数为插入列的位置;(插入到前面)
append()将新的数据行添加到 DataFrame 中,该函数会在行末追加数据行.
df.insert(0, "new_money", value=df["gross"] - df["budget"])#在指定的位置进行添加.

2-数据删除

del del xxx['column']删除 DataFrame 中的数据
pop()删除 DataFrame 中的数据
drop('标签')删除一行.使用行索引标签,从 DataFrame 中删除某一行数据。如果索引标签存在重复,那么它们将被一起删除.
df.drop(2, axis=0).head() df.drop("color",axis="columns").head()# 删除索引行 # 删除具体列

3-重置索引&重命名标签&设置索引列

df_new = df.reindex(index=[0, 2, 5], columns=['Time', 'Name', 'Age'])只获取0 2 5行,Time,Name,Age列
rename() df.rename(columns={'Name': '姓名', 'Age': '年龄', "height": "身高"}, index={0: 'first', 1: 'second', 2: 'third'})对行和列重新命名.
df_data.set_index(keys='Name')设置索引列 keys : 要设置为索引的列名(如有多个应放在一个列表里) (列值-->列标签) drop : 将设置为索引的列删除,默认为True 保留当前列+(列值-->列标签) append : 是否将新的索引追加到原索引后(即是否保留原索引),默认为False inplace : 是否在原DataFrame上修改,默认为False

4-对象拼接

concat() pd.concat([df_one,df_two])如果想让输出的 行索引 遵循依次递增的规则,那么需要将 ignore_index 设置为 True pd.concat([df_one,df_two],axis="index",ignore_index=True)
append()a.append(b) 单独链接一个Dataframe对象 a.append([b,c]) 连接多个Dataframe对象

常用属性和方法汇总

DataFrame 的属性和方法,与 Series 相差无几.

名称属性&方法描述
T行和列转置。
axes返回一个仅以行轴标签和列轴标签为成员的列表。
dtypes返回每列数据的数据类型。
emptyDataFrame中没有数据或者任意坐标轴的长度为0,则返回True。
ndim轴的数量,也指数组的维数。
shape返回一个元组,表示了 DataFrame 维度。
sizeDataFrame中的元素数量。
values使用 numpy 数组表示 DataFrame 中的元素值。
head()返回前 n 行数据。
tail()返回后 n 行数据。

numpy操作总结

1-创建ndarray对象:

numpy.array(object, dtype=None, copy=True, order=None,ndmin=0)
序号参数描述说明
1object表示一个数组序列。
2dtype可选参数,通过它可以更改数组的数据类型。
3copy可选参数,表示数组能否被复制,默认是 True。
4order以哪种内存布局创建数组,有 3 个可选值,分别是 C(行序列)/F(列序列)/A(默认)。
5ndmin用于指定数组的维度。/也可查看(.ndium)


2-方法总结

函数
numpy_data.reshape()reshape(4, 3) 可以改变多维数组行数和列数,从而达到数组变维的目的
numpy.arange(start, stop, step, dtype)创建给定数值范围的数组.
np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)返回均匀间隔的一维等差数组,默认均分 50 份.
np.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None)返回一个 ndarray 数组,它用于创建等比数组.
np.random.randint(low=5,high=10,size=(30,8))

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

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

相关文章

Ubuntu 未能识别较新型号 Nvidia 显卡案例分析

(首发地址:学习日记 https://www.learndiary.com/2024/03/unknown-nvidia-card-in-ubuntu/ ) 大家好,我是在淘宝“学习日记小店”做 Linux 服务的 learndiary。本文分享两个关于 Ubuntu 操作系统未能正确识别新型 NVIDIA 显卡型号…

代码随想录算法训练营第二十五天| LeetCode216. 组合III、LeetCode17.电话号码的字母组合

#LeetCode 216. Combination III #LeetCode 216. 视频讲解:和组合问题有啥区别?回溯算法如何剪枝?| LeetCode:216.组合总和III_哔哩哔哩_bilibili 如果做了77 题后,这个题目可以用相似的思路。回溯三部曲: …

c++和c语言的区别实例

C和C语言在程序设计领域内具有深远的影响,它们不仅丰富了编程的世界,也为软件开发人员提供了强大的工具。虽然C是在C语言的基础上发展起来的,但两者之间存在着一些关键的区别。为了更深入地理解这些不同,本文将从多个维度探讨C和C…

数据结构——双向链表(C语言版)

上一章:数据结构——单向链表(C语言版)-CSDN博客 目录 什么是双向链表? 双向链表的节点结构 双向链表的基本操作 完整的双向链表示例 总结 什么是双向链表? 双向链表是一种常见的数据结构,它由一系列节…

深度学习pytorch——可视化visdom(持续更新)

安装可看:e: Error while finding module specification for ‘visdom.server‘ (ModuleNotFoundError: No module name-CSDN博客 在命令行窗口使用python -m visdom.server,会出现一个web地址,在浏览器中访问,即可看见在python中…

springboot做自定义校验注解

目录 自定义校验注解的实现 注意: 首先,我们需要自定义一个校验注解: 注解含义: Target({ElementType.FIELD}) Retention(RetentionPolicy.RUNTIME) Constraint(validatedBy PhoneValidator.class) 校验注解逻辑实现类&a…

算法打卡day24|回溯法篇04|Leetcode 93.复原IP地址、78.子集、90.子集II

算法题 Leetcode 93.复原IP地址 题目链接:93.复原IP地址 大佬视频讲解:复原IP地址视频讲解 个人思路 这道题和昨天的分割回文串有点类似,但这里是限制了只能分割3次以及分割块的数字大小,根据这些不同的条件用回溯法解决就好啦 解法 回溯…

#微信小程序:微信小程序常见的配置传值

微信小程序 app.js 设置全局的基础数据 通过 let app getApp() 获取里面的数据 app.json 设置tab,注册页面的路由 app.wxss 公共的样式,引入iconfont project.config.json 项目配置文件,用的最多就是配置是否开启https校验 pages 包含一个个…

2024最新版正规视频影视系统源码/APP+H5视频影视源码

全新魅思V20正规视频影视系统源码,APPH5视频影视源码。会员花费三千购入的,具体搭建教程放压缩包了! 有兴趣的下载自行研究吧,搭建一共要用到3个域名,可以拿二级域名搭建。

C语⾔内存函数

目录 1. memcpy使⽤和模拟实现 memcpy函数的模拟实现: 2. memmove使⽤和模拟实现 memmove的模拟实现: 3. memset函数的使⽤ 4. memcmp函数的使⽤ 1. memcpy使⽤和模拟实现 void * memcpy ( void * destination, const void * source, size_t num ); • 函数me…

一周速递|全球车联网产业动态(2024年3月24日)

政策法规 1、3月19日,北京市委副书记、市长殷勇表示,北京市三年前开始率先采用车路协同技术路线,推进自动驾驶技术发展。以北京经济技术开发区为起点,将进一步深化自动驾驶和智慧城市建设的联动,继续在这个领域吸引更…

c语言函数大全(L开头)

c语言函数大全(L开头) There is no nutrition in the blog content. After reading it, you will not only suffer from malnutrition, but also impotence. The blog content is all parallel goods. Those who are worried about being cheated should leave quickly. 函数名…

Python文件读写操作

文件操作注意点 注意点: 1. for line in file --> 会将偏移量移到末尾 2. buffering1 --> 缓冲区中遇到换行就刷新,即向磁盘中写入 3. 读操作结束后,文本偏移量就会移动到读操作结束位置 """编写一个程序,循环不停的写入…

简述C语言文件操作

🌈 个人主页:白子寰 🔥 分类专栏:魔法指针,进阶C,C语言,C语言题集,C语言实现游戏👈 希望得到您的订阅和支持~ 💡 坚持创作博文(平均质量分79),分享…

数组划分,双指针

1 移动零 题目链接:https://leetcode.cn/problems/move-zeroes/description/ 这道题要在原数组中交换位置,并且还要求算法有稳定性。我们的常规思路是划分数组,用双指针解决。 public static void doubleIndex3(int[] arr){for(int cur 0…

计算机网络(特南鲍姆版) 期末总结

教材《计算机网络(第六版)》 特南鲍姆版 介绍 互联的可以交换信息的计算机称之为计算机网络,如:英特网 用途 1.访问信息 客户-服务器模型 peer-to-peer system(点对点技术,P2P) P2P&#xf…

深入理解Linux与Java的IO模型

目录 IO模型Linux的I/O模型Java的I/O模型联系与区别 同步,异步,阻塞,非阻塞同步与异步阻塞与非阻塞Linux I/O模型中的应用Java I/O模型中的应用容易混淆的地方 通过交互理解IO模型用户空间与内核空间Linux I/O模型的交互过程 在软件开发领域&…

加载三维模型,加载时黑的?

JS引擎是单线程 JS和渲染引擎线程无法同时进行,若异步任务和同步任务过多,JS引擎运行,渲染引擎未工作,导致黑黑的

Delphi DataSet转JSon(字符串拼接json)

Delphi中将TDataSet转换为JSon字符串。 function Test.DataSetToJson(ADataset: TDataSet): string; varARecord: string;AField: TField;i: integer; beginResult : ;with ADataset dobegin// 如果dataset是空就退出if IsEmpty thenExit;//初始化ARecordARecord : ;//定义开头…

图论基础|841.钥匙和房间、463. 岛屿的周长

目录 841.钥匙和房间 思路:本题是一个有向图搜索全路径的问题。 只能用深搜(DFS)或者广搜(BFS)来搜。 463. 岛屿的周长 841.钥匙和房间 力扣题目链接 (opens new window) 有 N 个房间,开始时你位于 0…