pandas库 DataFrame的常见操作
·
目录
排序:df.sort_values(by='列名', ascending=False)按指定列降序排序,整行数据同步调整,当参数值为ture时则为升序排序或默认升序排序
数据替换:df['列名'].replace({'旧值':'新值'})实现值替换,需注意代码换行可能引起的误解。
内容修改:直接赋值(如df['列名'] = 新值)可更新数据。
一.Pandas库的核心特点与应用场景
1.表格数据处理
Pandas的核心功能是将数据以表格形式(DataFrame)处理,支持列名、行索引等结构化操作,适用于金融、股票等领域的Excel数据分析。
2.与NumPy的区别
NumPy仅支持数值类型数据,而Pandas支持字符串、列表等多种数据类型。
Pandas底层基于NumPy实现,但功能更丰富(如数据读取、转换、计算等)。
3.数据转换
Pandas表格数据(数值类型)可直接转换为NumPy数组,两者可互相转化。
二.Pandas与OpenPyXl的对比
- Pandas:专注于数据存储、计算和分析,类似NumPy与OpenPyXL的结合体。
- OpenPyXL:模拟Excel操作(公式、绘图等),功能更偏向文件操作而非数据分析。
三.DataFrame与Series数据类型
- DataFrame:二维表格数据,包含行索引(
index)和列名(columns),可通过字典形式创建(键为列名,值为数据)。"DataFrame(数据框)就是excel表(多个Series的拼接)"import pandas as pd df_1 = pd.DataFrame({'age':[10,20,30], 'name':['tim','john','rose'], 'income':[100,200,300]}, index=['person1','person2','person3']) print(df_1) age name income person1 10 tim 100 person2 20 john 200 person3 30 rose 300 - Series:一维表格数据,用于处理单列/行数据,支持自定义索引(
index)。#生成第一个Series[按照默认的index] s_1 = pd.Series([1,2,3,4,5]) print(s_1) 0 1 1 2 2 3 3 4 4 5 dtype: int64 #自定义index s_2 = pd.Series([1,2,3,4,5], index=['a', 'b', 'c', 'd', 'e']) print(s_2) a 1 b 2 c 3 d 4 e 5 dtype: int64 - 属性:两者共有
values(数据值)、index(行索引)、columns(列名)等属性
四.DataFrame常用操作
-
排序:
df.sort_values(by='列名', ascending=False)按指定列降序排序,整行数据同步调整,当参数值为ture时则为升序排序或默认升序排序import pandas as pd dic={'name':['jack','marry','john','tom'], 'age':[13,45,67,23], 'gender':['f','f','m','m']} df=pd.DataFrame(dic) print(df) name age gender 0 jack 13 f 1 marry 45 f 2 john 67 m 3 tom 23 m # 根据年龄这一列进行排序(升序和降序) df=df.sort_values(by=['age']) print(df) name age gender 0 jack 13 f 3 tom 23 m 1 marry 45 f 2 john 67 m df=df.sort_values(by=['age'],ascending=False) print(df) name age gender 2 john 67 m 1 marry 45 f 3 tom 23 m 0 jack 13 f -
数据替换:
df['列名'].replace({'旧值':'新值'})实现值替换,需注意代码换行可能引起的误解。# 值替换 df['gender'] =df['gender'].replace(['m','f'],['male','female']) print(df) name age gender 2 john 67 male 1 marry 45 female 3 tom 23 male 0 jack 13 female -
数据访问:
- 通过行列索引或位置序号访问数据,df.loc[]方法通过行名和列名定位数据,df.iloc[]方法通过位置序号定位数据
- 支持切片(如
a:d)和离散选择(如['a','d'])。import pandas as pd import numpy as np datas=pd.date_range('20180101',periods=5)#产生一个时间数据,五个 df=pd.DataFrame( np.arange(30).reshape(5,6), index=datas, columns=['A','B','C','D','E','F'] ) A B C D E F 2018-01-01 0 1 2 3 4 5 2018-01-02 6 7 8 9 10 11 2018-01-03 12 13 14 15 16 17 2018-01-04 18 19 20 21 22 23 2018-01-05 24 25 26 27 28 29 # 打印某个值 print(df.loc['20180103','B']) 13 # 打印某列值 print(df.loc[:,'B']) 2018-01-01 1 2018-01-02 7 2018-01-03 13 2018-01-04 19 2018-01-05 25 print(df.loc['20180103':,'B']) 2018-01-03 13 2018-01-04 19 2018-01-05 25 print(df.loc['20180103':,['B',"D"]]) B D 2018-01-03 13 15 2018-01-04 19 21 2018-01-05 25 27 # 打印某行值 print(df.loc['20180103',:]) A 12 B 13 C 14 D 15 E 16 F 17 # 打印某些行 print(df.loc['20180103':,:]) A B C D E F 2018-01-03 12 13 14 15 16 17 2018-01-04 18 19 20 21 22 23 2018-01-05 24 25 26 27 28 29 # 获取某个数据 print(df.iloc[1,2]) 8 # 获取某列 print(df.iloc[:,2]) 2018-01-01 2 2018-01-02 8 2018-01-03 14 2018-01-04 20 2018-01-05 26 #获取某几列 print(df.iloc[:,2:]) C D E F 2018-01-01 2 3 4 5 2018-01-02 8 9 10 11 2018-01-03 14 15 16 17 2018-01-04 20 21 22 23 2018-01-05 26 27 28 29 print(df.iloc[:,[2,3]]) C D 2018-01-01 2 3 2018-01-02 8 9 2018-01-03 14 15 2018-01-04 20 21 2018-01-05 26 27 # 获取某行 print(df.iloc[2,:]) A 12 B 13 C 14 D 15 E 16 F 17 # 获取某些行 print(df.iloc[2:,]) A B C D E F 2018-01-03 12 13 14 15 16 17 2018-01-04 18 19 20 21 22 23 2018-01-05 24 25 26 27 28 29
-
删除数据:
df.drop('行名', inplace=True)默认直接删除指定行,也可以通过axis=" "参数改变值为0时删除指定行,值为1时则删除指定列;inplace=True时覆盖原变量生效为False则不会改变原来的数据而是生成一个副本;
删除列:del df['列名'] 或 df.drop('列名', axis=1, inplace=True)。
删除行:df.drop('行名', axis=0, inplace=True)。
-
import pandas as pd df = pd.DataFrame( {'age':[10,10,12], 'name':['tom','rose','jack'], 'income':[100,200,300]}, index=['person1','person2','person3']) print(df) age name income person1 10 tom 100 person2 10 rose 200 person3 12 jack 300 # 删除 # 直接在原数据上删除 del df['age'] print(df) name income person1 tom 100 person2 rose 200 person3 jack 300 # 删除列 data = df.drop('name',axis=1,inplace=False) print(data) income person1 100 person2 200 person3 300 # 删除行 df.drop('person1',axis=0,inplace=False) name income person2 rose 200 person3 jack 300 -
内容修改:直接赋值(如
df['列名'] = 新值)可更新数据。
-
添加列:
import pandas as pd df = pd.DataFrame( {'age':[10,10,12], 'name':['tom','rose','jack'], 'income':[100,200,300]}, index=['person1','person2','person3']) print(df) age name income person1 10 tom 100 person2 10 rose 200 person3 12 jack 300 # 在最后增加一列 df['pay']=[20,30,40] print(df) age name income pay person1 10 tom 100 20 person2 10 rose 200 30 person3 12 jack 300 40 -
添加行:通过指定行名和列名添加
df.loc['person4',['age','name','income']]=[20,'kitty',200] print(df) age name income pay person1 10.0 tom 100.0 20.0 person2 10.0 rose 200.0 30.0 person3 12.0 jack 300.0 40.0 person4 20.0 kitty 200.0 NaN
五.pandas库读取不同类型的文件
import pandas as pd
#读取csv文件
df_1=pd.read_csv("")
df_2=pd.read_csv("",encoding='utf-8',header=None)
# 读取excel文件
df_3=pd.read_excel("")
# 读取txt文件
df_4=pd.read_table("",sep='',header=None)
更多推荐


所有评论(0)