1. 运行方式
一种方式是启动Python,然后在命令窗口下直接输人相应的命令;另外一种就是将完整的代码写成.py脚本,如hello.py,然后通过python hello.py执行。在编写脚本的时候,可以添加适当的注释。在每一行中,可以用井号“#”来添加注释,如果注释有多行,可以在两个“'''”之间(3个英文的单引号)添加注释内容。如果脚本中带有中文(中文注释或者中文字符串,中文字符串要在前面u),那么需要在文件头注明编码,并且还要将脚本保存为UTF-8编码格式。
2. 基本命令
(1)基本运算
Python支持多重赋值。a,b,c=2,3,4 相当于a=2 b=3 c=4。Python支持对字符串的灵活操作,如:
S='I like python'
S+'very much' #得到'I like python very much'
S.split('') #将s以空格分割,得到列表['I','Iike','python']
(2)判断与循环
显然判断和循环是所有编程语言的基本命令,Python的判断语句如下。
if条件1:
语句2
elif条件3:
语句4
else:
语句5
Python一般不用花括号,也没有end语句,它是用缩进对齐作为语句的层次标记。同一层次的缩进量要一一对应,否则报错。Python的循环也相应地有for循环和while循环,while循环如下。
s,k = 0
while k < 101:
k = k + 1
S = s + k
print s
for循环如下。
S=0
for k in range(101):
S = S + k
print s
in是一个非常方便、而且非常直观的语法,用来判断一个元素是否在列表/元组中,range用来生成连续的序列,一般语法为range(a,b,c),表示以a为首项、c为公差且不超过b-1的等差数列。
3. 函数
Python用def来自定义函数。
def add2(x):
return x+2
print add2(1)
Python的函数返回值可以是各种形式,比如返回列表,甚至返回多个值。
def add2(x = 0,y = 0):#定义函数,同时定义参数的默认值
return [x+2,y+2] #返回值是-个列表
def add3(x,y):
return x+3,y+3 #双重返回
a,b = add3(1,2) #此时a=4,b=5
Python支持用lambda对简单的功能定义“行内函数”。
f = lambda x:x + 2 #定义函数f(x)=x+2
g = lambda x,y:x+y #定义函数g(x,y)=x+y
4. 数据结构
Python有4个内建的数据结构:List(列表)、Tuple(元组)、Dictionary(字典)以及Set(集合),它们可以统称为容器(container),因为它们实际上是一些“东西”组合而成的结构,而这些“东西”,可以是数字、字符甚至是列表,或者是它们之间几种的组合。通俗地讲,容器里是什么都行,而且容器里的元素类型不要求相同。
(1)列表/元组
列表和元组都是序列结构,从外形上看,列表是用方括号标记的,而元组是用圆括号标记的。访问列表和元组中的元素的方式都是一样的,如a[0]等于1,b[2]等于6等。容器里是什么都行,因此下面的定义也是成立的。
c = [1,'abc′,[1,2]]
从功能上看,列表可以被修改,而元组不可以。对于a= [1,2,3],那么语句a[0]=0,就会将列表a修改为[0,2,3],而对于元组b=(4,5,6),语句b[0]=1就会报错。要注意的是,如果已经有了一个列表a,同时想复制a,命名为变量b,那么b=a是无效的,这时候b仅仅是a的别名(或者说引用),修改b也会修改a。正确的复制方法应该是b=a[:]。与列表有关的函数是list,与元组有关的函数是tuple,它们的用法和功能几乎一样,都是将某个对象转换为列表/元组,如list('ab')的结果是['a','b'],tuple([1,2])的结果是(1,2)。
(2)字典
从数学上来讲,字典实际上是一个映射。它也相当于一个列表,然而它的“下标”不再是以0开头的数字,而是让自己定义的“键”(Key)开始。创建一个字典的基本方法为:
d={'today':20,'tomorrow':30}
这里的'today'、'tomorrow'就是字典的键,它在整个字典中必须是唯一的,而20、30就是键对应的值,访问字典中元素的方法也很直观。
d['today'] #该值为20
d['tomorrow']#该值为30
还有其他一些比较方便的方法来创建一个字典,如通过dict()函数转换,或者通过dict.fromkeys来创建,如下。
dict([['today',20],['tomorrow',30]]) #也相当于{'today':20,'tomorrow':30}
dict.fromkeys(['today','tomorrow'],20) #相当于('today':20,'tomorrow':20)
(3)集合
同数学上的集合概念基本上是一致的,它与列表的区别在于:1.它的元素是不重复的,而且是无序的;2.它不支持索引。一般我们通过花括号{}或者set()函数来创建一个集合。
s =(1,2,2,3) #注意2会自动去重,得到{1,2,3}
s = set([1,2,2,3]) #同样,它将列表转换为集合,得到{1,2,3}
由于集合的特殊性(特别是无序性),因此集合有一些特别的运算。
a = t | s #t和s的并集
b = t & s #t和s的交集
c = t - s #求差集(项在t中,但不在s中)
d = t ^ s #对称差集(项在t或s中,但不会同时出现在二者中)
5.Numpy
构造Numpy
索引与切片
常见运算
数组规整
线性代数
爱因斯坦求和约定
6.Pandas
创建dataframe
import pandas as pd # 用字典 dict 创建数据帧
dict_eg = {'Integer': [1, 2, 3, 4, 5],'Greek': ['alpha','beta','gamma','delta','epsilon']}
df_from_dict = pd.DataFrame(data=dict_eg)
df_from_dict2 = df_from_dict.set_index('Integer')
# 用列表 list 创建数据帧
list_fruits = [['apple', 11],['banana', 22],['cherry', 33],['durian', 44]]
df_list1 = pd.DataFrame(list_fruits)
df_list1.set_axis(['a', 'b', 'c', 'd'], axis='index')
df_list1.set_axis(['Fruit', 'Number'], axis='columns')
df_list2 = pd.DataFrame(list_fruits,columns=['Fruit', 'Number'],index = ['a', 'b', 'c', 'd'])
import numpy as np
np_array = np.random.normal(size = (10,4))
df_np = pd.DataFrame(np_array,columns=['X1', 'X2', 'X3', 'X4'])
data = [ ] # 用 for 循环生成列表
for idx in range(10):
data_idx = np.random.normal(size = (1,4)).tolist()
data.append(data_idx[0])
df_loop = pd.DataFrame(data,columns = ['X1','X2','X3','X4'])
相关函数
iris_df.index
iris_df.columns
iris_df.axes
iris_df.values #返回二维数组
iris_df.info #获取数据帧摘要信息
iris_df.describe() #生成数据帧统计摘要信息
iris_df.head() #查看数据帧的前几行数据
iris_df.tail() #查看数据帧的后几行数据
iris_df.shape #获取数据帧的维度信息,返回一个元组
iris_df.size #获取数据单元格总数
可视化