金融统计分析与挖掘实战3.3.1-3.3.3

金融统计分析与挖掘实战3.3.1-3.3.3,第1张

# 3.3 数据框 
# 特征:多个序列按照相同的索引组成的二维表
# 3.3.1 数据框的创建
import pandas as pd
import numpy as np   # 先导入两个最常用的数据处理分析包
data = {"a" : [2,2,np.nan,5,6],"b" : ["kl","kl","kl",np.nan,"kl"],"c" : [4,6,5,np.nan,6],"d" : [7,9,np.nan,9,8]}  #生成一个字典
df = pd.DataFrame(data)
print(df)   #格式非常符合我们储存变量的形式
     a    b    c    d
0  2.0   kl  4.0  7.0
1  2.0   kl  6.0  9.0
2  NaN   kl  5.0  NaN
3  5.0  NaN  NaN  9.0
4  6.0   kl  6.0  8.0
# 数据框属性
# 包括列变量的名称、索引和值
print("数据框中列的名称 columns = ")   #对输出结果进行说明
print(df.columns)   # column表示列变量名
print("-" * 40)    # 用分隔线分隔各部分结果
print("数据框中索引 index = ")
print(df.index)   #index 表示索引
print("-" * 40)
print("数据框中的值 =  ")
print(df.values)   #  value表示取值
数据框中列的名称 columns = 
Index(['a', 'b', 'c', 'd'], dtype='object')
----------------------------------------
数据框中索引 index = 
RangeIndex(start=0, stop=5, step=1)
----------------------------------------
数据框中的值 =  
[[2.0 'kl' 4.0 7.0]
 [2.0 'kl' 6.0 9.0]
 [nan 'kl' 5.0 nan]
 [5.0 nan nan 9.0]
 [6.0 'kl' 6.0 8.0]]
# 3.3.3 数据框方法
# 1.去掉空值 dropna()
df1 = df.dropna()
print(df)   # 原始数据框不发生变化
print("*" * 40)
print(df1)  # 去掉空值后的结果,注意这里去掉的是包含空值所在行的所有元素,相当于删除掉有空值的所有样本 
     a    b    c    d
0  2.0   kl  4.0  7.0
1  2.0   kl  6.0  9.0
2  NaN   kl  5.0  NaN
3  5.0  NaN  NaN  9.0
4  6.0   kl  6.0  8.0
****************************************
     a   b    c    d
0  2.0  kl  4.0  7.0
1  2.0  kl  6.0  9.0
4  6.0  kl  6.0  8.0
# 2.填充空值 fillna()
df2 = df.fillna(0)  # 所有空值元素用0填充,括号里面的表示要填充的元素
print(df2)
     a   b    c    d
0  2.0  kl  4.0  7.0
1  2.0  kl  6.0  9.0
2  0.0  kl  5.0  0.0
3  5.0   0  0.0  9.0
4  6.0  kl  6.0  8.0
df3 = df.fillna("kl")
print(df3)
     a   b    c    d
0  2.0  kl  4.0  7.0
1  2.0  kl  6.0  9.0
2   kl  kl  5.0   kl
3  5.0  kl   kl  9.0
4  6.0  kl  6.0  8.0
# 每一列空值填充的元素不一样
df4 = df.fillna({"a" : 0,"b" : "kl","c" : 0, "d": "lk"}) # 不同的列用列变量名表示,然后用字典的形式将每列空值要填充的元素补充到值上
print(df4)
     a   b    c    d
0  2.0  kl  4.0  7.0
1  2.0  kl  6.0  9.0
2  0.0  kl  5.0   lk
3  5.0  kl  0.0  9.0
4  6.0  kl  6.0  8.0
# 一部分列需要填充
df5 = df.fillna({"a" : 8888, "b" : "kkkk"})  #按照上述形式将需要填充的列写入即可,没写的列不填充空值
print(df5)
        a     b    c    d
0     2.0    kl  4.0  7.0
1     2.0    kl  6.0  9.0
2  8888.0    kl  5.0  NaN
3     5.0  kkkk  NaN  9.0
4     6.0    kl  6.0  8.0
# 3 .排序 sort_values()
data1 = {"a":[5,3,4,1,6],"b":["d","c","a","e","q"],"c":[4,6,5,5,6]}
Df = pd.DataFrame(data1)
print(Df)
   a  b  c
0  5  d  4
1  3  c  6
2  4  a  5
3  1  e  5
4  6  q  6
Df1 = Df.sort_values("a",ascending = False) # 括号内第一个参数,填排序的变量名,第二个参数默认为升序,如果降序则需设置
print(Df1)
   a  b  c
4  6  q  6
0  5  d  4
2  4  a  5
1  3  c  6
3  1  e  5
Df2 = Df.sort_values("b",ascending = False)  #字母也可以按照顺序进行排序
print(Df2)
   a  b  c
4  6  q  6
3  1  e  5
0  5  d  4
1  3  c  6
2  4  a  5
# 4.对索引进行排序 sort_index()
Df3 = Df1.sort_index(ascending = False)  #索引是唯一的,不需要指定,括号里参数直接写排序模式即可
print(Df3)
   a  b  c
4  6  q  6
3  1  e  5
2  4  a  5
1  3  c  6
0  5  d  4
# 5. 显示前几行 用head()
H4 = Df3.head(4)   # 括号里表示要取的行数,取前4行
print(H4)
   a  b  c
4  6  q  6
3  1  e  5
2  4  a  5
1  3  c  6
# 6. 删除数据框中指定的列 用drop()
H41 = H4.drop("b",axis = 1)   #必须得指定轴为1
print(H41)
   a  c
4  6  6
3  1  5
2  4  5
1  3  6
# 水平连接两个数据框用join()
Df4 = pd.DataFrame({"e":[1,3,5,7,9]})
Df5 = df4.join(Df4)
print(Df5)
     a   b    c    d  e
0  2.0  kl  4.0  7.0  1
1  2.0  kl  6.0  9.0  3
2  0.0  kl  5.0   lk  5
3  5.0  kl  0.0  9.0  7
4  6.0  kl  6.0  8.0  9
# 8.数据库转换为numpy数组 as_matrix()
list1 = ["a","b","c","d","e","f"]
list2 = [1,2,3,4,5,6]
list3 = [1.4,3.5,2,6,7,8]
list4 = [4,5,6,7,8,9]
list5 = ["t",5,6,7,"k",9.6]

D = {"m1":list1,"m2":list2,"m3":list3,"m4":list4,"m5":list5} #定义一个字典,将键和值匹配上
print(D)
{'m1': ['a', 'b', 'c', 'd', 'e', 'f'], 'm2': [1, 2, 3, 4, 5, 6], 'm3': [1.4, 3.5, 2, 6, 7, 8], 'm4': [4, 5, 6, 7, 8, 9], 'm5': ['t', 5, 6, 7, 'k', 9.6]}
D = pd.DataFrame(D)
print(D)
  m1  m2   m3  m4   m5
0  a   1  1.4   4    t
1  b   2  3.5   5    5
2  c   3  2.0   6    6
3  d   4  6.0   7    7
4  e   5  7.0   8    k
5  f   6  8.0   9  9.6
D1 = D.as_matrix()
print(D1)    # 新版本pandas不兼容此 *** 作
---------------------------------------------------------------------------

AttributeError                            Traceback (most recent call last)

 in 
----> 1 D1 = D.as_matrix()
      2 print(D1)    # 新版本pandas不兼容此 *** 作


C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\generic.py in __getattr__(self, name)
   5463             if self._info_axis._can_hold_identifiers_and_holds_name(name):
   5464                 return self[name]
-> 5465             return object.__getattribute__(self, name)
   5466 
   5467     def __setattr__(self, name: str, value) -> None:


AttributeError: 'DataFrame' object has no attribute 'as_matrix'
D1 = D.iloc[:,:].values   # D.as_matrix()新版本中采用iloc[:,:].values 或者 D.values也可以
print(D1)  
[['a' 1 1.4 4 't']
 ['b' 2 3.5 5 5]
 ['c' 3 2.0 6 6]
 ['d' 4 6.0 7 7]
 ['e' 5 7.0 8 'k']
 ['f' 6 8.0 9 9.6]]
G = {"m1":list2,"m2":list3,"m3":list4}
G = pd.DataFrame(G)
print(G)
   m1   m2  m3
0   1  1.4   4
1   2  3.5   5
2   3  2.0   6
3   4  6.0   7
4   5  7.0   8
5   6  8.0   9
G1 = G.iloc[:,:].values
print(G1)
[[1.  1.4 4. ]
 [2.  3.5 5. ]
 [3.  2.  6. ]
 [4.  6.  7. ]
 [5.  7.  8. ]
 [6.  8.  9. ]]

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/567689.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-09
下一篇 2022-04-09

发表评论

登录后才能评论

评论列表(0条)

保存