正式学习python的第0天

简介:

学习写代码的第N天(实际上第0天)

正式开启被男朋友魔鬼训练的第一天,看大神们的代码来学习python,欢迎查收20181218的学习心得~

摘要

  1. 类,实例,方法,属性的概念
  2. loc,iloc和ix索引的使用
  3. str的内置方法
  4. concat和merge的使用
  5. 布尔型索引
  6. duplicates()的使用
  7. 方法是否有返回值

一、类,实例,方法,属性的概念
https://blog.csdn.net/weixin_31678985/article/details/79723750
目前是看别人的讲解,后续会出自己的心得版啦~(挖坑中。。。。。。)

二、loc,iloc和ix索引的使用

2.1、使用说明

 loc是索引列标签和行标签(也就是index和columns)
 iloc是索引列号和行号(行号和列号都是从0开始的序列)
 ix是既可以索引行标签,也可以索引列标签

2.2、举例说明

import pandas as pd
data = pd.DataFrame(data = {'X': [1, 2, 3, 4, 5, 6, 7, 8], 
                            'Y': [11, 12, 13, 14, 15, 16, 17, 18]},
                    index = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])
print(data)
#四种方式索引第一行数据
print(data.loc['a'])
print(data.iloc[0])
print(data.ix['a'])
print(data.ix[0])

#四种方式索引第一列数据
print(data.loc[:, ['X']])
print(data.iloc[:, [0]])
print(data.ix[:, ['X']])
print(data.ix[:, [0]])

#四种方式索引多行数据。注意:行号或者列号索引是左闭右开,行标签或者列标签索引是左闭右闭(详见2.3.2)
print(data.loc['a':'b'])
print(data.iloc[0:2])
print(data.ix['a':'b'])
print(data.ix[0:2])   #此时ix是切片索引

#四种方式索引多列数据。索引单列时列需要加上中括号,索引多列时列不需要加上中括号
print(data.loc[:, 'X':'Y'])
print(data.iloc[:, 0:2])
print(data.ix[:, 'X':'Y'])
print(data.ix[:, 0:2])   #此时ix是切片索引

2.3、两个小问题

2.3.1、 索引index重复的情况
当DataFrame的index重复的时候用loc和ix同时索引行和列可能会出错(出错原因有待探讨)。建议使用iloc来索引。(注意:DataFrame的index可以重复,但是columns不能重复,如果有重复列名则该列值会被最后一次出现此列的值替代)

import pandas as pd
data = pd.DataFrame(data = {'X': [1, 2, 3, 4, 5, 6, 7, 8],
                            'Y': [11, 12, 13, 14, 15, 16, 17, 18]},
                    index = [0, 1, 0, 1, 0, 1, 1, 0])
print(data)
#同时索引行和列的时候
print(data.loc[0:1, 'X':'Y'])    #出错无法运行
print(data.ix[0:1, 'X':'Y'])     #出错无法运行

print(data.iloc[0:2, 0:2])     #索引前2行前2列
import pandas as pd
data = pd.DataFrame(data = {'X': [1, 2, 3, 4, 5, 6, 7, 8],
                            'Y': [11, 12, 13, 14, 15, 16, 17, 18]},
                    index = [0, 1, 1, 1, 1, 1, 1, 1])
print(data)
#同时索引行和列的时候
print(data.loc[0:1, 'X':'Y'])    #可以运行
print(data.ix[0:1, 'X':'Y'])     #可以运行

print(data.iloc[0:2, 0:2])     #索引前2行前2列

2.3.2、iloc和loc, ix索引不都是切片索引

import pandas as pd
data = pd.DataFrame(data = {0: [1, 2, 3, 4, 5, 6, 7, 8],
                            1: [11, 12, 13, 14, 15, 16, 17, 18],
                            2: [21, 22, 23, 24, 25, 26, 27, 28]},
                    index = [0, 1, 2, 3, 4, 5, 6, 7])
print(data)

print(data.iloc[0:2, 0:2])    #索引前2行前2列
print(data.loc[0:2, 0:2])     #索引前3行前3列
print(data.ix[0:2, 0:2])      #索引前3行前3列

通过上述例子可以发现iloc索引是切片索引,即左闭右开,loc索引是左闭右闭,但是ix有时候是左闭右开,有时候是左闭右闭,可能这就是现在都不推荐使用ix的原因吧~

三、str的内置方法

https://www.jianshu.com/p/e2d48c64b404
这个博客写出了Python中str的所有内置方法,有需求可以去上面查看~

四、concat和merge的使用

4.1、concat常用参数说明

参数 说明
objs 参与连接的列表或字典,且列表或字典里的对象是pandas数据类型,唯一必须给定的参数
axis 默认是0,0代表index,1代表columns
join 默认是outer(并集),inner是交集
ignore_index 忽略连接轴上的索引,产生一组新索引range(length)

4.2、merge常用参数说明

参数 说明
right 参与连接的DataFarme
how 默认inner,可选:{‘left’, ‘right’, ‘outer’},
on 用于连接的列名,必须同时存在于两个DataFrame中,如果未指定,则以left和right列名的交集作为连接键
left_on 左侧DataFarme中用作连接键的列
right_on 右侧DataFarme中用作连接键的列
left_index 将左侧DataFarme的行索引用作其连接键
right_index 将右侧DataFarme的行索引用作其连接键

4.3、举例说明

import pandas as pd
data_1 = pd.DataFrame(data = {'X': [1, 2, 3],
                            'Y': [11, 12, 13]})
data_2 = pd.DataFrame(data = {'Z': [ 4, 5, 6],
                            'Y': [11, 12, 19]})
print(data_1)
print(data_2)
print(data_1.merge(data_2, on='Y', how='inner'))   #内连接,取交集
print(data_1.merge(data_2, on='Y', how='outer'))   #外连接,取并集,没有值部分补充NaN
print(data_1.merge(data_2, on='Y', how='left'))    #左连接,以左边作为连接基础,右边可丢弃或补充NaN
print(data_1.merge(data_2, on='Y', how='right'))   #右连接,以右边作为连接基础,左边可丢弃或补充NaN

结果如下:
image

import pandas as pd
s1 = pd.Series([0, 1, 2], index = ['a', 'b', 'c'])
s2 = pd.Series([2, 3, 4], index = ['c', 'f', 'e'])
s3 = pd.Series([4, 5, 6], index = ['c', 'f', 'g'])
print(pd.concat([s1, s2, s3]))  #直接连接所有表
print(pd.concat([s1,s2,s3],ignore_index = True))  #生成新的索引

结果如下:
image

五、布尔型索引
布尔型索引可以索引Series,list或者数组,不能索引DataFrame。布尔型索引结果是一个布尔型数组。

六、drop_duplicates()的使用

import pandas as pd
data = pd.DataFrame({'A':[1, 1, 2, 2], 'B':['a', 'a', 'b', 'b']})
print(data)
data.drop_duplicates(inplace = True)
print(data)

结果如下:
image

七、方法是否有返回值

#无返回值的方法
data = [1, 2, 5, 7, 3, 4]
a = data.sort()
print('data的结果是:',data)
print('a的结果是:',a)

#有返回值的方法
Str = 'ABCdefgh'
a = Str.replace('ABC', 'abc')
print('Str的结果是:',Str)
print('a的结果是:',a)

结果如下:
image

目录
相关文章
|
9天前
|
机器学习/深度学习 前端开发 算法
学习Python需要多久?
【7月更文挑战第6天】学习Python需要多久?
20 5
|
5天前
|
供应链 数据挖掘 Python
后劲真大,我愿称之为学习python的“圣经”
很多小伙伴都在学习Python,但是爱看书的找不到适合自己的,这本书可以完美的解决你的问题,还能帮助到很多需要处理数据,做Excel自动方面的。 学习数据分析的好处众多,无论是对于个人职业发展还是企业的运营决策都具有重要意义。
|
4天前
|
机器学习/深度学习 数据采集 算法
Python实现ISSA融合反向学习与Levy飞行策略的改进麻雀优化算法优化支持向量机回归模型(SVR算法)项目实战
Python实现ISSA融合反向学习与Levy飞行策略的改进麻雀优化算法优化支持向量机回归模型(SVR算法)项目实战
|
10天前
|
数据采集 SQL 关系型数据库
Python学习路线【对标大厂Python开发工程师的招聘要求,并推荐优质免费资源】打卡学习不迷茫
Python学习路线【对标大厂Python开发工程师的招聘要求,并推荐优质免费资源】打卡学习不迷茫
45 14
|
4天前
|
机器学习/深度学习 数据采集 算法
Python实现ISSA融合反向学习与Levy飞行策略的改进麻雀优化算法优化支持向量机分类模型(SVC算法)项目实战
Python实现ISSA融合反向学习与Levy飞行策略的改进麻雀优化算法优化支持向量机分类模型(SVC算法)项目实战
|
8天前
|
索引 Python
十分钟学习Python异常处理
在编程过程中,错误和异常是不可避免的。Python提供了强大的异常处理机制,帮助我们捕获和处理运行时错误,使程序更加健壮和可靠。本文将带你在十分钟内快速掌握Python的异常处理基础知识。
|
10天前
|
机器学习/深度学习 算法 数据挖掘
Python强化学习应用于数据分析决策策略:** - 强化学习让智能体通过环境互动学习决策。
【7月更文挑战第5天】**Python强化学习应用于数据分析决策策略:** - 强化学习让智能体通过环境互动学习决策。 - Python因丰富库(如TensorFlow, PyTorch, Keras, Pandas, NumPy)和生态而受青睐。 - 使用OpenAI Gym构建环境,如`gym.make('CartPole-v0')`。 - 选择模型,例如神经网络,定义策略如Q-Learning。 - 训练模型,调整智能体行为,如Q-Learning更新Q表。 - 最后评估模型性能,实现数据驱动决策。
23 3
|
8天前
|
存储 人工智能 数据挖掘
十分钟学习Python基础知识
Python是一种高效、易学且功能强大的编程语言,广泛应用于数据分析、人工智能、Web开发等领域。如果你是编程新手,想要快速入门Python,那么这篇文章将是你的最佳选择。我将在十分钟内带你了解Python的基础知识。
|
11天前
|
存储 安全 编译器
Python学习日记(一:List、Tuple、dictionary)
1.列表、元组和字典都是序列 2.列表字典可以修改和删除序列中的某个元素,而元组就是一个整体,不能修改和删除,一定要修改或删除的话,只能修改和删除整个元组。 3.既然元组不能删除和修改,有什么作用呢? 1.元组比列表遍历速度快,因为元组是一个整体,运算效率高; 2.正是因为不能修改,元组可以保护不需要修改的数据,可以使代码结构更安全。
|
11天前
|
API Python
Python学习日记(二:函数和逻辑操作)
Python中的函数和逻辑操作至关重要。函数包括可变和不可变参数。