这是我在入门Python的时候边学边记的一些小笔记
字符串
字符串不能被更新
数据集
里面的元素都可以是不同数据类型的
都可以被索引和切片
查看一个变量的数据类型使用type(obj)方法
如type(tup1)
列表
列表使用[]括起来,里面的元素可以是不同数据类型的,中间用逗号隔开
列表可以被更新
listA=[1,2,3,4,5]
元组
元组使用()括起来,元组不可以被更新
tup1 = (‘Google’, ‘Runoob’, 1997, 2000);
tup2 = (1, 2, 3, 4, 5 );
tup3 = “a”, “b”, “c”, “d”;
不允许删除单个元素,但是可以删除整个元组
如果元组只有一个元素,元素后要加上逗号,否则括号会被当成运算符: tup1=(550,);
集合
使用{}或者set()来创建集合,但是空的集合只能用set()来创建,{}这样子是创建一个空字典
使用集合这种数据集类型主要是为了去除重复元素
去重:
students=['a','b','a','d']
set(students)
集合的运算:a={2,2,3,4} b={2,3,4,5}
交集:a&b
并集:a|b
差集:a-b
只有a或b存在的元素:a^b
可以理解成a|b-a&b
字典
字典中的元素是使用键值对存储的,通过键来访问,而不是通过下标和偏移量
使用{}来创建字典
students={'ali':2204,'bob':3445}
位运算
位运算符:<< >> & | ^
如果对整数采用位运算符,默认是将整数作为二进制运算的
a=3
a<<3
print(a)
'''将会输出24'''
逻辑运算符
and or not
Python的判断语句不支持&& 和 ||
成员运算符
in not in
可以判断元素是否是数据集的成员
身份运算符
is is not
可以判断引用的是不是同一对象
字符串
可以用’string’ 或者 "string"来表示一串字符串
字符串重复:
a="string";
a=a*2;
print(a)
就会输出stringstring
python中字符串格式化的用法和C中一样
end
end一般用于print语句中,用于将结果输出到同一行,或者在输出末尾添加不同的字符
逻辑分支
Python没有switch case 语句
实例:
if a>0:
statment1
elif a=0:
statment2
else:
statment3
循环
都可以使用break关键字跳出循环
while语句
while a>0:
statments
statments1
Python没有do while循环
while循环加上else语句
当不满足while循环的条件时执行else语句
for 循环语句
for 循环可以遍历任何一个序列,包括列表,元组和字符串
for x in list:
statement
else:
statement2
range函数
遍历数字序列
例如:
按顺序遍历
for x in range(5)
print(x)
这样会输出 0 到 4
遍历其中一个段
for x in range(5,8)
print(x)
这样会输出 5 到 7
注意是左闭右开,跟列表截取的规则是一样的
设定增量
for x in range(1,10,3)
print(x)
这样会输出1,4,7,9 也就是每个数字之间相差3
pass 语句
不做任何事情的一个语句,相当于一条空语句
模块
一个模块就是一个.py文件,里面可以定义一些常用的函数或者变量
导入的模块应该在当前代码目录或者在sys.path所定义的目录中
from [module] import [function]
从指定模块导入某个或某些函数
包是模块的集合
格式化输出
str.format() 的基本使用如下:
>>> print(’{}网址: “{}!”’.format(‘菜鸟教程’, ‘www.runoob.com’))
菜鸟教程网址: “www.runoob.com!”
括号及其里面的字符 (称作格式化字段) 将会被 format() 中的参数替换。
在括号中的数字用于指向传入对象在 format() 中的位置,如下所示:
>>> print(’{0} 和 {1}’.format(‘Google’, ‘Runoob’))
Google 和 Runoob
>>> print(’{1} 和 {0}’.format(‘Google’, ‘Runoob’))
Runoob 和 Google
大括号里面可以是参数序列,也可以是参数关键词
类
定义: calss A ():
类的实例: a=A() 注意不使用new关键字
构造方法
_init_(arg1,arg2,……)
public属性、方法
直接名称,通过className.attributeName可以访问到
private属性、方法(两个下划线开头) __privateAttr
方法
类的方法里面第一个参数要为self,是this的意思
继承
类B继承于类A: class B(A):
多继承: class X (A,B,C,D,……):
数据处理总结
seaborn包是用来作数据可视化的,跟matplotlib搭配使用
读取CSV文件一般import进pandas包然后用data=pandas.read_csv(‘filename’,header=0)来读取
返回值是一个dataframe类型的
filename可以使用相对路径,表示当前目录可以写’./train.csv’
header=0表示第0行是标题
寻找数据集中缺失的数据可以用data.isnull()
缺失总数用data.isnull().sum()来统计
dataframe:(假设保存的数据集名为data)
寻找数据集中缺失的数据
可以用data.isnull() 缺失总数用data.isnull().sum()来统计
调用data.isnull()的话会得到一个列表,列表里面只有TRUE 和 FALSE,如果该值是空那就是TRUE
寻找每一种数据的出现次数
用data[‘name’].value_counts()
针对ordinary、norminal、binary可用
对数据分组进行计算,比如计算分组的平均数等
有点类似于数据库中的groupby计算,涉及至少两列数据,用法有两种(例 要对列A根据列B进行分组并计算平均值)
1. 先访问单独列A,对它进行.groupby(B).mean() >>>data['A'].groupby(['B']).mean()
2. 对整个dataframe进行groupby,然后访问列A的mean() >>>data.groupby(['B'])['A'].mean()
dataframe中axis的意义
使用0值表示沿着每一列或行标签\索引值向下执行方法
使用1值表示沿着每一行或者列标签模向执行对应的方法
定位符合某个条件的数据(在处理缺失数据时十分有用)
- data.loc[行条件,列条件]
data.loc[data[‘Age’]50,‘Survived’]=1 #将所有年龄为50岁的乘客的存活情况设置为1(行条件为Age50,列条件为列标签是Survived)
如果要修改筛选出来的数据,只能用data.loc[条件]=xxx的方法
根据条件筛选数据
1.data[data.Survived== 0 ].Age 筛选Age列中Survivied为0的元组
下面举三个例子
>>>data[1,‘b’]=3 将列标签为b的第2行数据替换为3
>>>data[data.age.isnull(),‘Age’]=34 将列标签为Age的空数据全部替换为34
>>>data[data.Survived==1] 显示所有符合data.Survived的值是1的数据(包括其他属性的)
替换数据
方法DataFrame.replace(to_replace=None, value=None, inplace=False, limit=None, regex=False, method=‘pad’, axis=None)
其中,将要被替换的to_replace和value可以是用列表和元组表示的数据集,表示在这个dataframe中这个列表里面的数据都是被替换的对象,to_replace和value的顺序是一一对应的
例如data[‘Sex’].replace([‘male’,‘female’],[0,1],inplace=True)表示将data里面Sex列的所有male值替换成0,所有female值替换成1
series:(假设保存的数据集名为series)
画图可以用series.plot.[相应图名字]() 来画 比如直方图:series.plot.bar() 饼图:series.plot.pie()
求出一些特殊值:series.max() series.min() series.mean()