ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Pandas打卡第三次任务

2020-12-22 22:00:01  阅读:522  来源: 互联网

标签:loc head 第三次 df demo 索引 dtype 打卡 Pandas


第三章 索引

一、索引器

1.表的列索引

df=pd.read_csv('data/learn_pandas.csv',usecols=['School','Grade','Name','Gender','Weight','Transfer'])
df['Name'].head()

解释:
1. usecols是什么意思:
pd.read_csv中的usecols函数实现读取指定列
2.df[‘Name’].head()
df[‘name’] #得到的是不包含列索引的Series结构
df[[‘name’]] #得到是包含列索引的DataFrame结构
df.name #得到是不包含列索引的Series结构

输出的地方

df=pd.read_csv('data/learn_pandas.csv',usecols=['School','Grade','Name','Gender','Weight','Transfer'])
df['School'].head()
#输出:
0    Shanghai Jiao Tong University
1                Peking University
2    Shanghai Jiao Tong University
3                 Fudan University
4                 Fudan University
Name: School, dtype: object

函数dtype( )
作用:结构化数组类型并加以使用
语法:numpy.dtype(object, align, copy)
参数 含义
Object 被转换为数据类型的对象。
Align 如果为true,则向字段添加间隔,使其类似 C 的结构体。
Copy 是否生成dtype对象的新副本,如果为flase,结果是内建数据类型对象的引用。

2.序列的行索引

取出两个索引之间的元素,并且这两个索引是在整个索引中唯一出现,则可以使用切片,同时需要注意切片会包含两个端点:
例子是:

s=pd.Series([1,2,3,4,5,6],index=['a','b','a','a','a','c'])
s['c':'b':-2]

输出是:

c    2
a    4
b    6
dtype: int64

!!!-2的作用:

s=pd.Series([1,2,3,4,5,6],index=['a','c','a','a','a','b'])
s['c':'b':2]

输出是:

#输出
c    2
a    4
b    6
dtype: int64

如果读取的两个索引的顺序和命令的索引顺序是一样的那么是正2,如果顺序相反则需要-2

!!!如果改为1是什么样子

#输出
运行耗时: 7毫秒
c    2
a    3
a    4
a    5
b    6
dtype: int64

!!!如果改为3呢

#输出
c    2
a    5
dtype: int64

如果是1那么读取的是从端点开始+1的所有元素;是2则读取从端点开始+2的所有元素,并且下一个元素也是+2;是3则读取从端点开始+3的元素,因为在读取下一个+3位置的元素已经超出端点了所以没有下一个输出。

3.loc索引器

对DataFrame的行进行选取,其中基于元素的是loc索引器,基于位置的是iloc索引器
看了一遍感觉理解了;
BUT!!!
练一练部分不能做出来:

df_demo.loc[df_demo.Grade.isin(['Freshman','Senior'])]
df_demo.loc[df_demo..select_dtypes(['Freshman','Senior'])].head()
df_demo.select_dtypes(df_demo.loc['Freshman','Senior']).head()

最后百度我的代码,感觉是对的

df_demo.select_dtypes(include=['bool']).head()

lambda:
Lambda 表达式(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。Lambda表达式可以表示闭包(注意和数学传统意义上的不同)。

4.iloc索引器

使用的话与loc类似,区别在于iloc是针对位置进行筛选的

5.query方法

支持把字符串形式的查询表达式传入query方法查询数据,表达式的执行结果必须返回布尔列表

6.随机抽样

sample函数可以对样本或特征进行随机抽样

二、多级索引

三、索引的常用方法

2.索引属性的修改

练一练:

#df_ex.rename_axis(("Change_Col", axis="columns"))

有问题!!!
样例代码也不好使!!!

3.索引的设置与重置

发现set_index如果没有设置append,则默认为false;

练习题

第一题:
1.query选出的是空

df.query('((age<=40)&''(job_title=="Dairy")&''(gender=="M")|''(job_title=="Bakery")&''(age<=40)&''(gender=="M"))')

loc运行出错

condition_1_1 = df_demo.job_title == 'Dairy'

condition_1_2 = df_demo.gender == 'M'

condition_1_3 = df_demo.age <= 40

condition_1 = condition_1_1 & condition_1_2 & condition_1_3

condition_2_1 = df_demo.job_title == 'Bakery'

condition_2 = condition_2_1 & condition_1_2 & condition_1_3

df_demo.loc[condition_1 | condition_2]

查看参考答案之后更正答案:

df.query("((age<=40)&(department=='Dairy')&(gender=='M'))|((department=='Bakery')&(age<=40)&(gender=='M'))").head()

loc部分不是很懂,找不到自己答案的错误

看了答案,容易理解

df.iloc[(df.EmployeeID%2==1).values,[0,2,-2]].head()

其中列数通过0,2,-2分别表示第一列,第三列,倒数第二列

练习题第二题

df.columns = [' '.join(i.split('\n')) for i in df.columns]

理解了答案,
join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串
split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串

抄了答案,但是不明白错误,还在查

df = pd.read_csv('data/chocolate.csv')
df['Cocoa Percent'] = df['Cocoa Percent'].apply(lambda x:float(x[:-1])/100)
df.query('(Rating<3)&(`Cocoa Percent` > `Cocoa Percent`.median())').head(3)

菜鸡加油!

标签:loc,head,第三次,df,demo,索引,dtype,打卡,Pandas
来源: https://blog.csdn.net/weixin_45778504/article/details/111416507

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有