【Python】【Numpy+Pandas数据处理·闯关】和鲸社区学习笔记day(2)

简介: 【Python】【Numpy+Pandas数据处理·闯关】和鲸社区学习笔记day(2)

1.创建DataFrame


data = {"col1":['Python', 'C', 'Java', 'R', 'SQL', 'PHP', 'Python', 'Java', 'C', 'Python'],
       "col2":[6, 2, 6, 4, 2, 5, 8, 10, 3, 4], 
       "col3":[4, 2, 6, 2, 1, 2, 2, 3, 3, 6]}
df = pd.DataFrame(data)
df

col1
col2 col3
0 Python 6 4
1 C 2 2
2 Java 6 6
3 R 4 2
4 SQL 2 1
5 PHP 5 2
6 Python 8 2
7 Java 10 3
8 C 3 3
9 Python 4 6


2. 设置索引


df['new_index'] = range(1,11)
df.set_index('new_index')



col1
col2 col3
new_index
1 Python 6 4
2 C 2 2
3 Java 6 6
4 R 4 2
5 SQL 2 1
6 PHP 5 2
7 Python 8 2
8 Java 10 3
9 C 3 3
10 Python 4 6


3.更改列名


#方法二:(使用rename()函数:修改指定修改某列或某几列名字)
df.rename(columns={'col1':'grammer', 'col2':'score', 'col3':'cycle','new_index':'id'}, inplace=True)
df.head()

grammer
score cycle id
0 Python 6 4 1
1 C 2 2 2
2 Java 6 6 3
3 R 4 2 4
4 SQL 2 1 5


4.更改全部列顺序


order = df.columns[[0, 3, 1, 2]] # 或者order = ['xx', 'xx',...] 具体列名
df = df[order]
df



score
id grammer cycle
0 6 1 Python 4
1 2 2 C 2
2 6 3 Java 6
3 4 4 R 2
4 2 5 SQL 1
5 5 6 PHP 2
6 8 7 Python 2
7 10 8 Java 3
8 3 9 C 3
9 4 10 Python 6


5.提取第一列位置在1,10,15上的值


# 方法一:
df.iloc[[1,10,15], 0]
# 方法二:
df['createTime'][[1,10,15]]
# 方法三:
df['createTime'].take([1,10,15])

out:

1 2020-03-16 10:58:48

10 2020-03-16 10:34:19

15 2020-03-16 10:52:14

Name: createTime, dtype: datetime64[ns]


6.判断数据框中所有行是否存在重复


df.duplicated()

fdf5aeafa881aef5a1ba03d23c02cd5d_cb1b20f6bec94351b5b2fe17b1d50a85.png


7. 判断education列和salary列数据是否重复(多列组合查询)


df.duplicated(subset = ['education','salary'])

0e9f11b8474b77448c506e8e2cb38160_7ad6f864de7b415dbba3ebd4cef857b0.png


8.提取value列元素值大于60小于70的行


df[(df['value'] > 60) & (df['value'] < 70)]


9.提取salary列包含字符串(‘–’)的行


# 方法一:isin()
df[df['salary'].isin(['--'])]
# 方法二:contains()
df[df["salary"].str.contains("--")]


10.提取value列和value1列出现频率最高的数字


# 先将两列使用append()按行合并,再用计数函数:
temp = df['value'].append(df['value1'])
temp.value_counts(ascending=False)#不加index,返回的是一个Series
temp.value_counts(ascending=False).index[:5] #返回一个数组


作业


import pandas as pd
import numpy as np
import re
data = pd.read_excel(r'pandas120.xlsx')
df = pd.DataFrame(data)
# 提取学历为本科,工资在25k-35k的数据
df1 = df.loc[df['education'].isin(['本科']) & df['salary'].isin(['25k-35k']), :]
# 提取salary列中以'40k'结尾的数据
df2 = df[df['salary'].str.endswith('40k')]
# 提取薪资区间中最低薪资与最高薪资的平均值大于30k的行,只需提取原始字段('createTime', 'education', 'salary')即可
salary = df
tmp = salary['salary'].str.extract(r'(\d+).*?(\d+)') # 正则匹配,分割字符串
salary['avg'] = ((tmp[0].astype('int') + tmp[1].astype('int')) / 2) # 切记 相加记得加小括号
df3 = salary[salary['avg'] > 30]
df3 = df3.drop(columns=['avg'])
# 将以上三题提取出来的行按照相同列进行合并,汇总到一个数据框中
answer_2 = pd.concat([df1, df2, df3], axis=0)
# 将三列数据合并成一列,并设置列名为answer,最后保留id(数据行数、answer)
data = pd.concat([answer_2.iloc[:, 0], answer_2.iloc[:, 1], answer_2.iloc[:, 2]])
df = pd.DataFrame(data, columns=['answer'])
df['id'] = range(len(df))
df = df[['id', 'answer']]
# 将结果保存为 csv 文件
df.to_csv(r'answer_2.csv', index=False, encoding='utf-8-sig')


收获


inplace = True表示在原DataFrame上进行操作 · pf.columns[索引]返回的是一个Index列表,可以用来作为.iloc[]的参数


· Pandas的insert()函数允许用户在指定的位置插入行和列。下面是insert()函数的语法:

DataFrame.insert(loc, column, value, allow_duplicates=False)

参数说明:

• loc:表示要插入的数据的位置,以整数形式表示。

• column:要插入的列名(如果未指定值,则必须传递列名)

• value:要插入的值。可以是单个值或一组值。

• allow_duplicates:如果设为True时,允许在同一位置上重复列名。

ps:已经存在的列的列名不能重复添加


· DataFrame对象

take函数是一个用于返回指定的行的函数。

语法:DataFrame.take(indices, axis=0, convert=None):

参数:

• indices:行的索引值(int或者list of ints)。

• axis:可选参数,默认值为0。

• convert: 可选参数,默认值为None。是否将索引转换为相应的列标签。

返回:Ndarray或者其他可迭代对象中存储的行元素。


·df.[] 里面也能对type为Series,数据为bool进行df数据筛选


相关文章
|
28天前
|
存储 Java 数据处理
(numpy)Python做数据处理必备框架!(一):认识numpy;从概念层面开始学习ndarray数组:形状、数组转置、数值范围、矩阵...
Numpy是什么? numpy是Python中科学计算的基础包。 它是一个Python库,提供多维数组对象、各种派生对象(例如掩码数组和矩阵)以及用于对数组进行快速操作的各种方法,包括数学、逻辑、形状操作、排序、选择、I/0 、离散傅里叶变换、基本线性代数、基本统计运算、随机模拟等等。 Numpy能做什么? numpy的部分功能如下: ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组 用于对整组数据进行快速运算的标准数学函数(无需编写循环)。 用于读写磁盘数据的工具以及用于操作内存映射文件的工具。 线性代数、随机数生成以及傅里叶变换功能。 用于集成由C、C++
232 1
|
28天前
|
Java 数据处理 索引
(Pandas)Python做数据处理必选框架之一!(二):附带案例分析;刨析DataFrame结构和其属性;学会访问具体元素;判断元素是否存在;元素求和、求标准值、方差、去重、删除、排序...
DataFrame结构 每一列都属于Series类型,不同列之间数据类型可以不一样,但同一列的值类型必须一致。 DataFrame拥有一个总的 idx记录列,该列记录了每一行的索引 在DataFrame中,若列之间的元素个数不匹配,且使用Series填充时,在DataFrame里空值会显示为NaN;当列之间元素个数不匹配,并且不使用Series填充,会报错。在指定了index 属性显示情况下,会按照index的位置进行排序,默认是 [0,1,2,3,...] 从0索引开始正序排序行。
145 0
|
28天前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
248 0
|
28天前
|
Java 数据处理 索引
(numpy)Python做数据处理必备框架!(二):ndarray切片的使用与运算;常见的ndarray函数:平方根、正余弦、自然对数、指数、幂等运算;统计函数:方差、均值、极差;比较函数...
ndarray切片 索引从0开始 索引/切片类型 描述/用法 基本索引 通过整数索引直接访问元素。 行/列切片 使用冒号:切片语法选择行或列的子集 连续切片 从起始索引到结束索引按步长切片 使用slice函数 通过slice(start,stop,strp)定义切片规则 布尔索引 通过布尔条件筛选满足条件的元素。支持逻辑运算符 &、|。
98 0
|
5月前
|
测试技术 数据处理 Python
Python列表推导式:简洁高效的数据处理利器
Python列表推导式:简洁高效的数据处理利器
283 80
|
3月前
|
存储 数据采集 数据处理
Pandas与NumPy:Python数据处理的双剑合璧
Pandas与NumPy是Python数据科学的核心工具。NumPy以高效的多维数组支持数值计算,适用于大规模矩阵运算;Pandas则提供灵活的DataFrame结构,擅长处理表格型数据与缺失值。二者在性能与功能上各具优势,协同构建现代数据分析的技术基石。
255 0
|
10月前
|
SQL 分布式计算 数据处理
云产品评测|分布式Python计算服务MaxFrame | 在本地环境中使用MaxFrame + 基于MaxFrame实现大语言模型数据处理
本文基于官方文档,介绍了由浅入深的两个部分实操测试,包括在本地环境中使用MaxFrame & 基于MaxFrame实现大语言模型数据处理,对步骤有详细说明。体验下来对MaxCompute的感受是很不错的,值得尝试并使用!
214 1
|
2月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
219 102
|
2月前
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
256 104

热门文章

最新文章

推荐镜像

更多