# 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)<ipython-input-32-b12b637b5581> in <module>
----> 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. ]]

金融统计分析与挖掘实战3.3.1-3.3.3相关推荐

  1. 金融统计分析与挖掘实战6.1-6.3

    # 6.1 关联规则 import numpy as np import pandas as pd import os os.chdir("C:\\Users\\Administrator\ ...

  2. 金融统计分析与挖掘实战5.1-5.2

    # 第5章 机器学习包 # 5.2.1 缺失值处理 import numpy as np import pandas as pd import os os.chdir("C:\\Users\ ...

  3. 金融统计分析与挖掘实战3.1-3.2

    # 第三章 数据处理包 pandas # 3.2序列 #3.2.1 序列的创建与访问 import pandas as pd import numpy as np # 数据分析前先导入两个最常见的包 ...

  4. 金融统计分析与挖掘实战7.6-7.7

    7.6 沪深300指数走势预测 import os os.chdir("C:\\Users\\Administrator\\Desktop") #设置路径 import panda ...

  5. 金融统计分析与挖掘实战8.3-8.4

    第八章 上市公司综合评价 # 设置工作路径和导入基本数据分析包 import os os.chdir("C:\\Users\\Administrator\\Desktop") #设 ...

  6. 金融统计分析与挖掘实战7.3-7.5

    # 7.3 上市公式净利润增长率计算 import os os.chdir("C:\\Users\\Administrator\\Desktop") import pandas a ...

  7. 金融数据分析与挖掘实战 4.2 Matplotlib(二)

    Matplotlib常用图形绘制 Matplotlib绘制的常用图形包括散点图.线性图.柱状图.直方图.饼图.箱线图和子图. 1.散点图 散点图又称为散点分布图,是以利用坐标点(散点)的分布形态反映特 ...

  8. 金融数据分析余挖掘实战1.9-1.10补充

    # 1.9.2 有返回值的函数 def sumt(t): #求1一直加到t的和s = 0while t > 0:s = s + tt = t - 1return s s = sumt(30) # ...

  9. 金融数据分析与挖掘实战练习2.10

    # 2.10矩阵及线性代数的运算 # 2.10.1 创建矩阵 import numpy as np mat1 = np.mat("1 2 3 ; 4 5 6 ; 7 8 9") p ...

最新文章

  1. springboot集成swagger2测试接口
  2. 在Linux上部署aspnet mvc3
  3. linux下初次安装mysql使用指南
  4. Python集合和函数
  5. python设置时间步长与时间离散格式_python怎么定义时间
  6. WAMP PHP开发环境
  7. Objective-C消息转发
  8. Codepen 每日精选(2018-3-29)
  9. 七牛云 rs.php 没有,设置了callbackUrl,七牛只是在客户端上打印了json格式的key和hash,居然没有按照设置跳转回来..怎么弄?...
  10. 交叉编译cross compiling
  11. Win10/11 自带输入法一键变五笔86/98/郑码/小鹤音形/表形码
  12. 买了北京亲子年票但没有小孩的朋友,接下来的一年我都给你安排好啦!!...
  13. Python自动化测试进阶系列——自动发邮件功能
  14. Android应用网络限制功能实现
  15. jq 修改元素css伪类样式
  16. 第8天 鼠标控制与32位模式切换
  17. 深度学习不得不知的英文名称
  18. 真香!java设置全局变量
  19. 不是青蛙就是王子,不是王子就是青蛙
  20. js html 最简单实现按按钮出现图标

热门文章

  1. char(128) mysql_char能表示(-128~127)
  2. Python Day42
  3. dubbo 分组后,dubbo-admin 看不到服务
  4. ECMAScript面向对象(一)
  5. [xcode]instruments来检验你的app
  6. 2013年第8周日元宵节
  7. 使用JAX-WS构建Web Services .
  8. 【转】Oracle 系统权限详细列表
  9. YAML_15 include and roles
  10. 孔维滢201771010110《面向对象程序设计(java)》第一周学习总结