pandas库
目录
一.Pandas库的核心特点与应用场景
1.表格数据处理
2.与NumPy的区别
3.数据转换
二.Pandas与OpenPyXl的对比
三.DataFrame与Series数据类型
四.DataFrame常用操作
排序:df.sort_values(by='列名', ascending=False)按指定列降序排序,整行数据同步调整,当参数值为ture时则为升序排序或默认升序排序
数据替换:df['列名'].replace({'旧值':'新值'})实现值替换,需注意代码换行可能引起的误解。
数据访问:
删除数据:df.drop('行名', inplace=True)默认直接删除指定行,也可以通过axis=" "参数改变值为0时删除指定行,值为1时则删除指定列;inplace=True时覆盖原变量生效为False则不会改变原来的数据而是生成一个副本;
内容修改:直接赋值(如df['列名'] = 新值)可更新数据。
添加列:
添加行:通过指定行名和列名添加
五.pandas库读取不同类型的文件
一.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 mdf=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 npdatas=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 25print(df.loc['20180103':,'B']) 2018-01-03 13 2018-01-04 19 2018-01-05 25print(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 29print(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)