python入门 – 簡書

1 基本语句

1.1 list和tuple区别

  1. list可修改,tuple不可修改
  2. 定义list[],定义tuple(),且定义单个元素的时候要加,
a=[1]
b=(1)
c=(1,)
print(isinstance(a,list))
print(isinstance(b,int))
print(isinstance(c,tuple))

输出结果

True
True
True

1.2 列举几种添加list元素的方法,哪种最快

1.append()

list末端添加单个元素,若该元素是一个list,就把整个list当作单个元素

a=[1,2,3]
b=[4,5,6]
a.append(b)
a

输出结果

[1, 2, 3, [4, 5, 6]]
②extend()

讲b列表每个元素都添加到a列表

a.extend(b)
a

输出结果

[1, 2, 3, [4, 5, 6], 4, 5, 6]
③ insert()

将一个元素插入到列表中,第一个参数是索引点,即插入的位置,第二个参数是插入的元素

a.insert(0,0)
a

输出结果

[0, 1, 2, 3, [4, 5, 6], 4, 5, 6]
④ +

将两个list相加,会返回到一个新的list对象,注意与前三种的区别。前面三种方法可对列表增加元素的操作,他们没有返回值,是直接修改了原数据对象。

注意:将两个list相加,需要创建新的list对象,从而需要消耗额外的内存,特别是当list较大时,尽量不要使用+来添加list,而应该尽可能使用List的append()

a+=b
a

输出结果

[0, 1, 2, 3, [4, 5, 6], 4, 5, 6, 4, 5, 6]

2 numpy

#matrix
a1=np.array([[1,2,3],
               [2,3,4]])
print('number of dim:',a1.ndim) #维数:2
print('shape:',a1.shape) #形状:(2,3)
print('size:',a1.size) #元素个数:6
np.array([2,3,4],dtype=np.int)
np.array([2,3,4],dtype=np.float)
#位数越大越精确,占用内存越大
np.zeros((3,4)) #0矩阵
np.ones((3,3),np.int) #1矩阵
np.empty((2,2))
np.arange(12).reshape((3,4)) #按步长,默认1
np.linspace(1,11,20).reshape((4,5)) #按个数
a=np.array([[1,1],[0,1]])
b=np.arange(1,5).reshape((2,2))
print(a,b,a+b,a-b,a*b,a/b,b**2) # + - * / 平方,和list的+不一样
print(np.dot(a,b),a.dot(b)) #矩阵乘法
c=np.random.random((2,4)) #生成元素在0~1的随机阵
print(np.sum(c),np.min(c),np.max(c))
np.min(c,axis=0) #按列
np.min(c,axis=1) #按行

3 pandas

Series、DataFrame

import pandas as pd
s1 = pd.Series([11, 12, 13],index=['a','b','c']) # 可带标签
s2 = pd.Series([21, 22, 23],index=['a','b','c'])
s3 = pd.Series([31, 32, 33],index=['a','b','c'])
df = pd.DataFrame([s1,s2,s3], index=['l1','l2','l3'])
df.describe() # 类似summary
df.T #转置

输出

     a   b   c
l1  11  12  13
l2  21  22  23
l3  31  32  33

loc、iloc(取值\修改)

df.iloc[1] #通过行号、列号获取数据
df.iloc[:,0] #获取列数据
df.loc['l1','a':'c'] #通过标签获取行数据
df.loc[:,['a','c']]

画图

import matplotlib.pyplot as plt #pandas封装了该函数
df.plot()
plt.show()

处理缺失值

import numpy as np
dates = pd.date_range('20180820',periods=6)
df = pd.DataFrame(np.arange(24).reshape((6,4)),index=dates,columns=['A','B','C','D']) 
df.iloc[0,1] = np.nan
df.iloc[1,2] = np.nan

==判断是否有na==

print(df.isna())

==删除==

print(df.dropna()) # 默认是删除掉含有NaN的行
print(df.dropna(
    axis=0, # 0对行进行操作;1对列进行操作
    how='any' # 'any':只要存在NaN就drop掉;'all':必须全部是NaN才drop
))

==替换==

# 替换NaN值为0或者其他
print(df.fillna(value=0))

导入数据

data = pd.read_csv('student.csv') # 读取csv
print(data)
print(data.head(3)) # 前三行
print(data.tail(3)) # 后三行

concat 合并

df1 = pd.DataFrame(np.ones((3,4))*0, columns=['a','b','c','d'])
df2 = pd.DataFrame(np.ones((3,4))*1, columns=['a','b','c','d'])
df3 = pd.DataFrame(np.ones((3,4))*2, columns=['a','b','c','d'])
res = pd.concat([df1,df2,df3],axis=0)
# 上述合并过程中,index重复,下面给出重置index方法
# 只需要将index_ignore设定为True即可
res = pd.concat([df1,df2,df3],axis=0,ignore_index=True)

apply

pandas 的 apply() 函数可以作用于 Series 或者整个 DataFrame,功能也是自动遍历整个 Series 或者 DataFrame, 对每一个元素运行指定的函数

groupby 分组

ipl_data = {'Team': ['Riders', 'Riders', 'Devils', 'Devils', 'Kings',
         'kings', 'Kings', 'Kings', 'Riders', 'Royals', 'Royals', 'Riders'],
         'Rank': [1, 2, 2, 3, 3,4 ,1 ,1,2 , 4,1,2],
         'Year': [2014,2015,2014,2015,2014,2015,2016,2017,2016,2014,2015,2017],
         'Points':[876,789,863,673,741,812,756,788,694,701,804,690]}
df = pd.DataFrame(ipl_data)
df.groupby('Team').mean()

https://www.jianshu.com/p/23d089c96a55

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论