Pandas
import pandas as pd 导入模块
import numpy as np
#数据类型:series一维 dataframe 二维
series一维
data = pd.Series([1,2,3,4,5,6,7,8,9,10])
print(data)
0 1
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
9 10
dtype: int64
data.head() #head 默认取前5个
0 1
1 2
2 3
3 4
4 5
dtype: int64
data.tail(2) #tail默认取后5个 默认倒着获取,写几就从后往前几个
8 9
9 10
dtype: int64
print(data[2]) #切片
3 按下标切片 2的下标是3
print(data[2:7]) # 切片2到7 下标的数据是34567
2 3
3 4
4 5
5 6
6 7
dtype: int64
dataframe 二维
df = pd.DataFrame([[1,2,3,4,5],[6,7,8,9,10],[60,70,80,90,100],[61,71,81,91,110]],columns=['a','b','c','d','e'],index=['A','B','C','D'])
print(df) ##columns :给列起别名 index:给索引起别名
a b c d e
A 1 2 3 4 5
B 6 7 8 9 10
C 60 70 80 90 100
D 61 71 81 91 110
df['b'] #按列标签取值 只取一列
A 2
B 7
C 70
D 71
Name: b, dtype: int64
print(df.loc['C']) #按照行标签名取值 只取一行
a 60
b 70
c 80
d 90
e 100
Name: C, dtype: int64
print(df.iloc[1]) #按照行索引取值 只取一行
a 6
b 7
c 8
d 9
e 10
Name: B, dtype: int64
print(np.sum(df)) #求每列的和
a 128
b 150
c 172
d 194
e 225
dtype: int64
print(np.sum(df,axis=1)) # 求每行的和 axis=1:按行。axis=0:按列(默认)
A 15
B 40
C 400
D 414
dtype: int64
print(df.loc['B':'D','c':'e']) #行和列一起切 第一个是行,第二个是列
c d e
B 8 9 10
C 80 90 100
D 81 91 110
print(df.iloc[-3:,-3:]) #索引行列一起切 第一个是行,第二个是列
c d e
B 8 9 10
C 80 90 100
D 81 91 110
df[df['a']>59] #切出大于59的所有行
C60 70 8 090 100
D61 71 81 91 110
df.sort_values(by='a',ascending=False) #按value 排序 ascending=True:升序 默认 False:降序 按照a的值大小排序
处理缺失值
np.random.randint(90,100,size=3) #生成区间值 90到100 之间随机生成三整型个值 [91 94 97]
np.random.randn(10) #正太分布数据 #随机分配10个数据
df = pd.DataFrame([np.random.randn(3),[1,2,np.nan],[np.nan,4,8]])
第一行值是正太分布数据 随机分配3个数据 ;第二行是1,2,空;第三行是 空,4,8;
0 1 2
0 -0.861719 -0.655275 -1.056403
1 1.000000 2.000000 NaN2
NaN 4.000000 8.000000
#填充空值
mean=np.mean(df.iloc[:,0]) #平均值 获取0下标的平均值
print(mean) = 0.5647720881081901
df.iloc[:,0].fillna(mean) #填充
0 -0.497073
1 1.000000
2 0.251463
Name: 0, dtype: float64
df.describe() #查看数据
df.info() #查看数据的结构