第二篇:机器学习基础 Pandas:Series 与 DataFrame 与数据常见操作、列操作、统计函数、排序、shift、rolling、groupby、merge、去重、交叉&透视表、缺失值处理

1 为什么使用Pandas

1. 增强图表可读性
2. 便捷的数据处理能力
3. 读取文件方便
4. 封装了Matplotlib、Numpy的画图和计算

2 Pandas数据结构

1。Pandas中一共有三种数据结构,分别为:Series、DataFrame和MultiIndex(老版本中叫Panel )。
2。其中Series是一维数据结构,DataFrame是二维的表格型数据结构,MultiIndex是三维的数据结构。

3 Pandas 常见操作详解

3.1 导入数据

import pandas as pd 

df = pd.read_csv(
    # 该参数为数据在电脑中的路径,可以不填写
    filepath_or_buffer='/Users/Haiwang/Desktop/sz000002.csv',
    # 该参数代表数据的分隔符,csv文件默认是逗号。其他常见的是'\t'
    sep=',',
    # 该参数代表跳过数据文件的的第1行不读入
    skiprows=1,
    # nrows,只读取前n行数据,若不指定,读入全部的数据
    nrows=15,
    # 将指定列的数据识别为日期格式。若不指定,时间数据将会以字符串形式读入。一开始先不用。
    # parse_dates=['交易日期'],
    # 将指定列设置为index。若不指定,index默认为0, 1, 2, 3, 4...
    # index_col=['交易日期'],
    # 读取指定的这几列数据,其他数据不读取。若不指定,读入全部列
    usecols=['交易日期', '股票代码', '股票名称', '收盘价', '涨跌幅', '成交量', '新浪概念', 'MACD_金叉死叉'],
    # 当某行数据有问题时,报错。设定为False时即不报错,直接跳过该行。当数据比较脏乱的时候用这个。
    error_bad_lines=False,
    # 将数据中的null识别为空值
    na_values='NULL',
)

3.2 查看数据常用操作

print(df.shape)  # 输出dataframe有多少行、多少列。
print(df.shape[0])  # 取行数量,相应的列数量就是df.shape[1]
print(df.columns) # 顺序输出每一列的名字,演示如何for语句遍历。
print(df.index) # 顺序输出每一行的名字,可以for语句遍历。
print(df.dtypes) # 数据每一列的类型不一样,比如数字、字符串、日期等。该方法输出每一列变量类型
print(df.head(3))  # 看前3行的数据,默认是5。与自然语言很接近
print(df.tail(3))  # 看最后3行的数据,默认是5。
print(df.sample(n=3))  # 随机抽取3行,想要去固定比例的话,可以用frac参数
print(df.describe())  # 非常方便的函数,对每一列数据有直观感受;只会对数字类型的列有效

3.3 读取指定的数据

3.3.1 如何选取指定的行、列

print(df['股票代码'])  # 根据列名称来选取,读取的数据是Series类型
print(df[['股票代码', '收盘价']]) # 同时选取多列,需要两个括号,读取的数据是DataFrame类型
print(df[[0, 1, 2]])  # 也可以通过列的position来选取

3.3.2 loc操作:通过label(columns和index的名字)来读取数据

print(df.loc['12/12/2016']) # 选取指定的某一行,读取的数据是Series类型
print(df.loc['13/12/2016': '06/12/2016'])  # 选取在此范围内的多行,和在list中slice操作类似,读取的数据是DataFrame类型
print(df.loc[:, '股票代码':'收盘价']) # 选取在此范围内的多列,读取的数据是DataFrame类型
print(df.loc['13/12/2016': '06/12/2016', '股票代码':'收盘价'])  # 读取指定的多行、多列。逗号之前是行的范围,逗号之后是列的范围。读取的数据是DataFrame类型
print(df.loc[:, :])  # 读取所有行、所有列,读取的数据是DataFrame类型
print(df.at['12/12/2016', '股票代码'])  # 使用at读取指定的某个元素。loc也行,但是at更高效。

3.3.3 iloc操作:通过position来读取数据

print(df.iloc[0]) # 以index选取某一行,读取的数据是Series类型
print(df.iloc[1:3]) # 选取在此范围内的多行,读取的数据是DataFrame类型
print(df.iloc[:, 1:3])  # 选取在此范围内的多列,读取的数据是DataFrame类型
print(df.iloc[1:3, 1:3])  # 读取指定的多行、多列,读取的数据是DataFrame类型
print(df.iloc[:, :])  # 读取所有行、所有列,读取的数据是DataFrame类型
print(df.iat[1, 1])  # 使用iat读取指定的某个元素。使用iloc也行,但是iat更高效。

3.3.4 筛选操作,根据指定的条件,筛选出相关拿数据

print(df['股票代码'] == 'sh000002') # 判断股票代码是否等于sz000002
print(df[df['股票代码'] == 'sz000002'])  # 将判断为True的输出:选取股票代码等于sz000002的行
print(df[df['股票代码'].isin(['sz000002', 'sz000003 ', 'sz000004'])])  # 选取股票代码等于XXX的行
print(df[df['收盘价'
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值