ISEE小语 论如何判断一个人是真有钱还是装有钱? 在网上看到这样的一个回答: “穷人是小心翼翼地大方,有钱人是大大方方地小气。” 回顾上篇
开始本篇 Pandas是一个强大的数据分析工具,可以用于处理数据的增、删、改、查操作。下面是一些常见的操作方法。 环境: Pycharm Python 3.9.16 安装: pip install pandas==2.0.0 导入: import pandas as pd 新增1 插入行使用df.loc方法插入数据
结果: # 创建一个空的DataFrame对象 df = pd.DataFrame( columns=['series1', 'series2', 'series3', 'series4']) # 定义要插入的数据 rows = [{'series1': 1, 'series2': 2, 'series3': 3, 'series4': 4}, {'series1': 9, 'series2': 8, 'series3': 7, 'series4': 6}] for r in rows: df.loc[df.shape[0]] = r print(df) 结果: 使用pd.concat()方法插入数据 请注意,Pandas2.0及以上版本已经删除DataFrame.append()插入数据的方法 其中ignore_index=True,指是否重新生成索引
结果: # 创建一个空的DataFrame对象 df = pd.DataFrame(columns=['series1', 'series2', 'series3', 'series4']) # 定义要插入的数据 rows = [{'series1': 'e', 'series2': 'f', 'series3': 'g', 'series4': 'h'}, {'series1': 'i', 'series2': 'j', 'series3': 'k', 'series4': 'l'}] df = pd.concat([df, pd.DataFrame(rows)], ignore_index=True) print(df) 结果: 2 插入列插入列可以使用赋值操作符(=)或者使用insert()方法 首先,先初始DataFrame 同以上插入多行后的DataFrame为例,在其基础上进行插入列 在DataFrame中直接创建新的列,即在以上df中追加插入一列
结果: 在DataFrame中直接创建新的列,即在以上df中追加插入多列 df[['series5', 'series6']] = [[1, 2], [3, 4]] print(df) 结果: 在DataFrame中的指定位置插入列
结果: 删除1 删除行要在Pandas中删除指定的一行或多行数据,使用drop()方法。 注意inplace=True参数指示drop()方法在原位修改数据,而不返回任何新的DataFrame。 首先,准备操作数据 # 创建DataFrame data = {'series1': ['a', 'e', 'i', 'm', 'q', 'u'], 'series2': ['b', 'f', 'j', 'n', 'r', 'v'], 'series3': ['c', 'g', 'k', 'o', 's', 'w'], 'series4': ['d', 'h', 'l', 'p', 't', 'x']} df = pd.DataFrame(data) print(df) 结果: 如删除指定索引的第一行
结果: df = df.drop([1, 2]) 这时,发现以上删除操作后,索引可能会出现不连续的情况。如果希望重新排序索引以使其连续,可以使用reset_index()方法。 df.reset_index(drop=True, inplace=True) print(df) 结果: 2 删除列要在Pandas中删除指定的列的数据,也是使用drop()方法。 可以通过传递列名称或者传递列索引,这两方法进行删除 首先,准备操作数据
结果: 删除指定series2列的数据 # 传递列名称列表 df.drop('series2', axis=1, inplace=True) # 或者通过索引删除第二列 # df.drop(df.columns[1], axis=1, inplace=True) print(df) 结果: 继以上操作,再同时删除指定series1和series3
结果: 修改1 修改行可以通过索引或条件来定位到指定的行进行修改,使用到了df.loc方法 注意,通过索引或条件来定位这两种方式,有一个小小的区别,那就是索引,修改的是整行数据,而条件定位,可以修改指定行中某列的单个数据。 相比较第二种条件来定的方式,更加精准。 首先,准备操作数据 # 创建DataFrame data = {'series1': ['a', 'e', 'i', 'm', 'q', 'u'], 'series2': ['b', 'f', 'j', 'n', 'r', 'v'], 'series3': ['c', 'g', 'k', 'o', 's', 'w'], 'series4': ['d', 'h', 'l', 'p', 't', 'x']} df = pd.DataFrame(data) print(df) 结果: 例,将第一行数据修改为1,2,3,4
结果: 2 修改列可以通过列名或索引来定位到指定的列,并修改相应的值 注意,这两种方式都是修改整列的数据。 首先,准备操作数据 # 创建DataFrame data = {'series1': ['a', 'e', 'i', 'm', 'q', 'u'], 'series2': ['b', 'f', 'j', 'n', 'r', 'v'], 'series3': ['c', 'g', 'k', 'o', 's', 'w'], 'series4': ['d', 'h', 'l', 'p', 't', 'x']} df = pd.DataFrame(data) print(df) 结果: 例,将第二列数据修改为1,2,3,4,5,6
结果: 查询1 查询行可以使用loc[]、条件表达式、query()方法来查询DataFrame中的指定数据 注意,loc[]方法适用于精确的行和列标签查询,条件表达式可用于基于条件过滤数据,query()方法可以实现更复杂灵活的查询 首先,准备操作数据 # 创建DataFrame data = {'series1': ['a', 'e', 'i', 'm', 'q', 'u'], 'series2': ['b', 'f', 'j', 'n', 'r', 'v'], 'series3': ['c', 'g', 'k', 'o', 's', 'w'], 'series4': ['d', 'h', 'l', 'p', 't', 'x']} df = pd.DataFrame(data) print(df) 结果: 例,查询第一列的第一行的数据
结果: 例,使用条件表达式查询列名称为series1,数据为'e'的那一行数据 condition = df['series1'] == 'e' value = df.loc[condition] print(value) 结果: 例,使用query()方法进行查询列名称为series2,数据包含'n'的那一行数据
结果: 使用query()方法进行高级查询时,可以使用多种方式来指定查询条件, 如大于(>)、小于(<)、等于(==)、不等于(!=)、逻辑与(and)、逻辑或(or)等。同时,我们也可以使用括号来分组条件表达式,以便实现更复杂的查询。 2 查询列可以通过指定的列名和使用iloc索引进行查询 首先,准备操作数据 # 创建DataFrame data = {'series1': ['a', 'e', 'i', 'm', 'q', 'u'], 'series2': ['b', 'f', 'j', 'n', 'r', 'v'], 'series3': ['c', 'g', 'k', 'o', 's', 'w'], 'series4': ['d', 'h', 'l', 'p', 't', 'x']} df = pd.DataFrame(data) print(df) 结果: 例,通过指定的列名,查询series1列的数据
结果: 例,通过列索引,查询series1列的数据 # 获取第一列的数据 column_value = df.iloc[:, 0] print(column_value)
总结Pandas非常强大,以上仅为日常基本操作,只作入门记录。 每个操作均有独立的测试数据,本次随记更加清晰易懂。 寄语:世间三美,明月,清风,眼前…… 看到这儿的朋友帮点个“赞”和“在看”,谢谢支持~!
文章就分享到这儿,喜欢就点个赞吧! |
|