numpy和pandas笔记

numpy, pandas学习记录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#使用numpy读取csv或者txt文件
#unpack按列读取,一般不用
file = np.loadtxt(file_path, delimiter=',',dtype=float,skiprows=5,unpack=True)
file.astype('float32') #转换类型
#转变维度
a=a.transpose((1,0,2))
#三元运算
arr = np.random.randn(4, 4)
np.where(arr >0 , 2, -2)
#ndarray上的方法
np.sum(a, axis=0)
a.sum(axis=0)
a.cumsum(axis=0) #累积和
a.cumprod(axis=0)
a.sort(axis=1), np.sort(a, axis=1)
#去重并排序
name = ['bb','aa','cc']
sorted(set(name))
np.unique(name)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#series是一维,dataframe是二维 dataframe的某一列是series类型
#创建series,通过ndarray,list, 字典等创建
import pandas as pd
import string
t1 = pd.Series(np.arange(10),index=list(string.ascii_uppercase[:10]))
t2 = pd.Series({'name':'xiaoming'})
t3 = pd.Series([1,2,3,4,5])
#读取series的第一二三行
t1[[1,2,3]]
t1[['b','c','d']]
#查看index, 可以转化为列表
t1.index
#查看values, 就是将series转化为一维的ndarray
t1.values
#去重
series.unique()

#通过dict创建dataframe
data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada', 'Nevada'],
'year': [2000, 2001, 2002, 2001, 2002, 2003],
'pop': [1.5, 1.7, 3.6, 2.4, 2.9, 3.2]}
frame = pd.DataFrame(data, columns=['year','pop','state'],index=[1,2,3,4,5,6])
frame['year'].name
frame.loc[1] #loc根据索引
del frame['pop']
#根据索引重新排列,默认是index,即重排行
df = df.reindex(['a','b','c','d','e'])
df = df.reindex(columns=[], fill_values=0)
#根据索引重新排列, 空值前向值填充
obj3 = pd.Series(['blue', 'purple', 'yellow'], index=[0, 2, 4])
obj3.reindex(np.arange(5),method='ffill')
#删除dataframe的行 []里是行索引
df = df.drop([1,2])
#删除列
df = df.drop([''], axis=1)
#检索
df[df['three'] > 5]
df.loc[['row_index'],['col_index']]
#排序
df.sort_index()
series.sort_values()
df.sort_index(axis=1) #根据列索引排序
df.sort_values(by=['col1','col2']) #类似结构体排序

#datafram的属性
df.shape
df.dtypes #列数据类型
df.ndim #维度
df.index #行索引
df.columns #列索引
df.values #转化为ndarray
df.head(3) #前三行
df.tail(3)

#读取csv
df=pd.read_csv('.csv')
#读取dataframe的某一行 series类型
df.iloc[1,:]
#填充nan
df.fillna(0)
#dataframe某一列的中位数
df["list_index"].median()
#dataframe的某一列, series类型
data['Title']
data.Title
#apply,默认axis=0,在列上运算
df.apply(lambda x: (x - x.mean())/x.std()) #x是一个向量
#one-hot编码
df = pd.get_dummies(df, dummy_na=True)

#concat函数
c=pd.concat([a,b],axis=1) a,b是series或者dataframe类型
1
2
#其他
list(map(lambda x : x*x , [1,2,3]))