本文目录一览:
- 利用Python进行数据分析-读书笔记(3)
- Python之Game笔记(3):pygame简单动画的实现
- python自学笔记13:元组和字典的操作
- python自学笔记三:循环体
- [python自学笔记一 基础输出](#python自学笔记一 基础输出)
利用Python进行数据分析-读书笔记(3)
pandas专门为处理表格和混杂数据设计
import pandas as pd
from pandas import Series, DataFrame
Series 类似于一维数组+索引
data = pd.Series([1,2,3,4,5]) # 生成Series数据
data.values
data.index
pd.Series([1,2], index=['a','b']) # 设置索引
data['a'] # 通过索引选取Series中单个或一组值
data[data%2==0] # 进行类似numpy数组的运算,index仍会保留
'a' in data
可以通过python字典创建Series,也可以通过设置index改变Series元素顺序。
缺失值用NaN
表示。
pd.isnull(data) # 检测缺失数据
pd.notnull
data1 + data2 # 根据索引自动对齐数据进行运算,类似join操作
data.name
data.index.name # 可赋值
index可以通过赋值方式修改。
pd.DataFrame(XXX) # 传入元素为等长列表或np数组组成的字典可以生成DataFrame数据,字典key值为列名
frame.head() # 前五行
pd.DataFrame(XXX, columns=[xxx], index=[xxxxx]) # 可能产生NaN
frame['a'] # 取列名为a的一列数据,等价于 frame.a(此时a需要是合理的变量名),可以以列表形式取多列数据,返回的Series序列索引与原DataFrame相同
frame.loc[0] # 行选取
可以用一个Series/值对某列赋值,需要长度相等。对不存在的列赋值可创建新列。
del frame[列名] # 删除列
通过索引方式返回数据视图,修改此返回数据也会影响源数据,Series.copy()
可以创建副本。
嵌套字典传给DataFrame,外层字典的键作为列名,内层键作为行索引。
frame.T # 转置
frame.reindex(新索引列表) # 根据新索引重排,若索引值当前不存在则NaN
列可以用columns
关键字重新索引。
obj3 = pd.Series(['blue', 'purple', 'yellow'], index=[0, 2, 4])
obj3.reindex(range(6), method='ffill') # ffill实现前向值填充
reindex可以修改(行)索引和列。只传递一个序列时,会重新索引结果的行,列可以用columns
关键字重新索引。
Series索引
series(索引列表/数值范围切片)
选取对应元素
Python之Game笔记(3):pygame简单动画的实现
- 学习pygame基本框架,简单动画的实现;
在pygame中引用图像最简单的方法是
image
函数。下面在马路的实例中,加入一辆汽车。首先pygame.image.load()
函数从硬盘加载一个图像,并创建一个名为my_car
的对象。这里,my_car
是一个surface,不过是存在内存中,并未显示出来,然后用blit
(块移)方法将my_car
复制到screen
表面上,从而显示出来。 计算机动画实际上就是把图像从一个地方移动到另一个地方,同时几个连接动作交待显示就会产生逼真的效果。 因此,在做动画中,最基本要考虑的因素主要是三个:
- 一是时间,什么时间移动,多长时间变下一个动作;
- 二是位置,从什么位置到什么位置;
- 三是动作,前后两个动作的连续性。 在这个例子中,因为车是俯视的,所以车轮转动实际是看不到的,所以不用考虑连续动作的变化,而是只考虑车的位置和多长时间移动即可。
- 第一步:
pygame.time.delay()
来实现时间延迟; - 第二步:
pygame.draw.rect()
把原来位置的图像覆盖掉; - 第三步:
screen.blit()
在新位置引入图像。 下面的程序实现了汽车从驶入到驶出的过程。
- 网页
python自学笔记13:元组和字典的操作
定义元组(tuple):
t1 = (1, 2, 3, 4) # 多个数据元组
t2 = (1,) # 如果元组内只有一个数据,也需要逗号隔开,否则这个数据将是他本身的类型
元组的操作:
元组类型数据不支持修改,可查找。
查找:
- 按下标查找:
print(t1[1])
- 函数查找:
print(t1.index(1)) # 返回对应下标,如果数据不存在,程序将报错
print(t1.count(1)) # 统计数据在元组当中出现的次数
print(len(t1)) # 统计元组当中的数据个数
注意:当元组内嵌套列表数据,可以通过下标的方法对列表数据进行修改,例如:
t3 = (1, 2, ["a", "b"])
t3[2][0] = "c" # t3的值将变为(1, 2, ["c", "b"])
定义字典(dict)
字典的特点:
- 符号为
{}
- 数据为键(key)值(value)对形式,每个键值对之间用逗号隔开,例如:
dict1 = {"name": "小明", "age": 18, "gender": "男"}
字典的操作:
dict1["name"] = "小红"
dict1["id"] = 3
如果key存在,将修改其所对应的值。如果不存在,将在字典最后添加该键值对。
删除数据
del()
: 删除字典或删除字典内的键值对
del dict1["name"] # 删除字典内的键值对,如果删除的key不存在,程序将会报错
del dict1 # 删除字典
clear(dict1)
: 清空字典
查找数据
- 按照key进行查找,最后返回相对应的值;
- 按函数进行查找:
get(key, 默认值)
: 如果查找的key不存在则返回所写的默认值,如果不写默认值则返回None
。
print(dict1.get("name")) # 小明
print(dict1.get("id", 110)) # 110
keys()
: 返回字典内的所有key,可用for
遍历
print(dict1.keys())
for key in dict1.keys():
print(key)
逐行输出:name
, age
, gender
values()
: 返回字典内的值,可用for
遍历
print(dict1.values())
for value in dict1.values():
print(value)
逐行输出:小明
, 18
, 男
items()
: 将字典内的数据以元组的形式返回,可用for
遍历
print(dict1.items())
for item in dict1.items():
print(item)
逐行输出:("name", "小明")
, ("age", 18)
, ("gender", "男")
遍历字典键值对(拆包)可在for
内使用两个临时变量:
for key, value in dict1.items():
print(f"{key}={value}")
逐行输出:
name=小明
age=18
gender=男
python自学笔记三:循环体
i = 0
result = 0
while i <= 100:
result += i
i += 1
print(f"1至100的累加和为{result}")
此段代码将在i
小于等于100时重复累加,最终输出结果为:5050。
1至100偶数相加:
i = 0
result = 0
while i <= 100:
if i % 2 == 0: # % 取余
result += i
i += 1
print(f"1至100偶数相加的和为{result}")
注意此段代码的缩进关系。if
和i += 1
是同一级别,result += i
处于if
之下。
因无法编辑格式,故用#
表示注释。
思考:猜数游戏代码应怎么写。电脑随机给出一个0至100的数字,由参与者猜测,直至猜测结果与电脑给出的数值一致。
python自学笔记一 基础输出
print("我是python小白")
终端输出:我是python小白
此种写法只用于了解print
函数的作用,在程序中要输出某个内容,一般采用变量的形式,即:
my = "小白"
print("我是python%s。" % my)
终端输出:我是python小白。
此处my
为变量,小白是被赋值给变量my
,并不是my
等于变量。定义变量的好处是一个程序可以无限次数的使用它。定义变量还可以为:
a = b = c = 2 # 2同时赋值给a、b、c三个变量
a, b, c = 1, 2, 3 # a=1, b=2, c=3
注意:变量名区分大小写,不能以数字开头。
name, age, weight = "小白", 18, 65.5
stuid = 1
print("我的名字是%s, 我的年龄是%d, 我的体重是%f公斤, 我的学号是%d" % (name, age, weight, stuid))
终端输出:我的名字是小白,我的年龄是18岁,我的体重是65.500000公斤,我的学号是1
print("我的名字是%s, 我的年龄是%d岁, 我的体重是%.2f公斤,我的学号是%03d" % (name, age, weight, stuid))
终端输出:我的名字是小白,我的年龄是18岁,我的体重是65.50公斤,我的学号是001
print(f"我的名字是{name},我明年的年龄是{age + 1}岁, 我的体重是{weight}公斤,我的学号是00{stuid}")
此写法为最常用。
终端输出:我的名字是小白,我明年的年龄是19岁,我的体重是65.5公斤,我的学号是001
%d
为整数型函数值,%03d
表示以3位整数显示,不足的以0替代,超出的原样显示。%f
为小数型函数值,%.2f
表示只显示小数点后两位。%s
为字符型函数值,字符串应以双引号或单引号括起。