python进阶-pandas基本操作

本文详细介绍如何使用Pandas库处理CSV数据,包括读取、筛选、排序、访问、统计和转换数据。涵盖DataFrame的基本操作,如获取列名、索引、筛选条件、排序方式、访问特定行和应用函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

pandas基本操作

介绍一种新的数据格式,csv

  • 纯文本,使用某个字符集,比如ASCII、Unicode等;
  • 由记录组成,典型的是每行一条记录;
  • 每条记录被分隔符分隔为字段;
  • 每条记录都有同样的字段序列。

1.读取csv文件:

df = pd.read_csv(r"C:\Users\liujie\Desktop\成绩表.csv")
print(df)

成绩表先在桌面上创建一下,保存时记得选择所有文件格式,编码格式为utf8,这样才能读取成功。不懂看这里:https://blog.csdn.net/weixin_43847614/article/details/90242979
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200517204251362.png
也可以选取行数,比如打印前两行:

print(df.head(2))

在这里插入图片描述

2.DataFrame

# 获取所有的列名
print(df.columns)
# 获取索引
print(df.index)
# 查看索引第一个
print(df.loc[0])

在这里插入图片描述

3.筛选

#筛选数学成绩大于90的
print(df[df.数学>90])
# 复杂筛选
print(df[(df.数学>80) & (df.语文>80) & (df.英语>80)])

在这里插入图片描述

4.排序

print(df.sort_values(['数学','语文','英语']).head())

在这里插入图片描述意思是按数学成绩排序,如果数学成绩相同就按语文排序,依次类推。head参数不填的话默认5个。

5.访问

访问的索引是1,也就是表格的第二位

# 按照索引定位
print(df.loc[1])

在这里插入图片描述如果我们想访问索引1就是表格中第一位怎么访问呢?
这里介绍下索引
创建一个字典:

# 索引
scores = {
    '英语':[90,87,87],
    '数学':[86,96,96],
    '姓名':['wang','li','sun']
}
df = pd.DataFrame(scores, index = ['one','two','three'])
print(df)

在这里插入图片描述
可以看到此时的索引已经变成了英文的one two three
如果再以df.loc[1]去访问,会报错
因为此时已经不存在数字索引了,所以不能通过数字索引去访问

print(df.loc['one'])

在这里插入图片描述
可以看到,以英文one去访问可以直接访问到表格的第一位
但是这样会比较麻烦,我们并不关心它的索引是多少,我们只想获取到这一条数据就行了,就可用到iloc函数

#实实在在的所谓的第几行
print(df.iloc[0])

在这里插入图片描述
这样就可以直接访问到第一条数据

还有ix函数,合并了loc和iloc的功能

# 访问多行
print(df.loc[:2])   #访问前三行
print(df.iloc[:2])  #实实在在的前两行

在这里插入图片描述

# 访问某一行,是错误的
# df[0]
# 访问多行数据是可以使用切片的
df[:2]

在这里插入图片描述
print(df.values)可以将所有数据以array的形式打印出来,因此array所有的操作都可以通过df.values操作。

# dataframe中的数组
print(df.数学.values)  #可以打印出所有的数学成绩
# 简单的统计
print(df.数学.value_counts())  #统计每个分数的人数
print(df['数学'])
print(df.数学)    # 只想获取数学成绩
print(df[['数学','语文']].head())   #想获取多列,此时是个表格,可以用head函数
new = df[['数学','语文']].head()
print(new*2)   #可以进行乘法操作

6.重点

def func(score):
    if score>=80:
        return "优秀"
    elif score>=70:
        return "良"
    elif score>=60:
        return "及格"
    else:
        return "不及格"

df['数学分类'] = df.数学.map(func)    #map这个函数可以根据我们现有的数据生成新的一列
print(df.head())

在这里插入图片描述
这仅仅是对数学分类,如果想对所有数据进行操作

# applymap对dataframe中所有的数据进行操作的一个函数
print(df.applymap(lambda x:str(x) +'-'))    #在所有数据后加个-

这样所有数据后面都会加个-

# apply函数,根据多列生成新的一个列的操作
df['new_score'] = df.apply(lambda x:x.数学 +x.语文, axis=1)
print(df.head(2))    #前几行
print(df.tail(2))    #最后几行

在这里插入图片描述
pandas中的dataframe的操作,很大一部分跟numpy中的二维数组的操作是近似的
不一一讲述了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值