数据分析 --- 02.Pandas

一.Series 对象(一维数组)

Series是一种类似与一维数组的对象,由下面两个部分组成:

  values:一组数据(ndarray类型)
  index:相关的数据索引标签

  1.创建

# 导入模块

from pandas import Series,DataFrame
import pandas as pd
import numpy as np

①使用列表创建

#使用列表创建Series

#默认索引
Series(data=[1,2,3])

#指定索引
Series(data=[1,2,3],index=[‘a‘,‘b‘,‘c‘])
结果为:

a    1
b    2
c    3
dtype: int64

②使用numpy 创建

s = Series(data=np.random.randint(0,100,size=(3,)),index=[‘a‘,‘b‘,‘c‘])
结果为:

a    37
b    13
c    71
dtype: int32

③使用字典创建

由字典创建:不能在使用index.但是依然存在默认索引

注意:数据源必须为一维数据
dic = {
    ‘语文‘:99,
    ‘数学‘:100,
    ‘英语‘:88,
    ‘理综‘:120
}
s = Series(data=dic)
结果为:

数学    100
理综    120
英语     88
语文     99
dtype: int64

  2.索引和切片

①索引

s[0]

结果为:
  数学    100

②切片

s[0:2]
结果为:

数学    100
理综    120
dtype: int64

  3.基本概念

①添加数据

s[‘毛概‘] = 111
结果为:

数学    100
理综    120
英语     88
语文     99
毛概    111
dtype: int64

②查看属性

shape 形状,size 总长度,index 索引,values 值
示例:

s.values
array([100, 120,  88,  99, 111], dtype=int64)

③查值

可以使用s.head(),tail()分别查看前n个和后n个值

示例:

s.tail(2)
语文     99
毛概    111
dtype: int64

④去重

s1 = Series(data=[1,1,1,2,2,2,3,3,4,56,6,7,8,8,8,7])
s1.unique()
结果为:

array([ 1,  2,  3,  4, 56,  6,  7,  8], dtype=int64)

  4.Series的运算

在运算中自动对齐不同索引的数据
如果索引不对应,则补NaN

①运算

示例:

s1 = Series(data=[1,2,3],index=[‘a‘,‘b‘,‘c‘])
s2 = Series(data=[1,2,3],index=[‘a‘,‘b‘,‘d‘])
s = s1 + s2
结果为:

a    2.0
b    4.0
c    NaN
d    NaN
dtype: float64

②可以使用pd.isnull(),pd.notnull(),

  或s.isnull(),notnull()函数检测缺失数据

③ boolean值可以作为Series的索引,只保留True对应的元素值,忽略False对应的元素值

二. DataFrame

DataFrame是一个【表格型】的数据结构。DataFrame由按一定顺序排列的多列数据组成。  设计初衷是将Series的使用场景从一维拓展到多维。DataFrame既有行索引,也有列索引。

  行索引:index
  列索引:columns
  值:values

  1.创建

①使用ndarray创建DataFrame

②使用字典创建

  2.属性

values、值columns、 列索引index、行索引shape  形状

  3.索引和切片

df[0]  #列索引
df.iloc[0] #行索引
df.iloc[1,2] #定位一个元素

df[0:2] #切行
df.iloc[:,0:2] #切列

对行进行索引

- 使用.loc[]加index来进行行索引(设置了index)
- 使用.iloc[]加整数来进行行索引

①修改索引

②获取前两列

③获取前两行

④定位元素

⑤切出前两行

⑥切出前两列

  4.运算

同Series一样:

  在运算中自动对齐不同索引的数据
  如果索引不对应,则补NaN

示例:

  5.练习

============================================

练习1:

假设ddd是期中考试成绩,ddd2是期末考试成绩,请自由创建ddd2,并将其与ddd相加,求期中期末平均值。

假设张三期中考试数学被发现作弊,要记为0分,如何实现?

李四因为举报张三作弊立功,期中考试所有科目加100分,如何实现?

后来老师发现有一道题出错了,为了安抚学生情绪,给每位学生每个科目都加10分,如何实现?

============================================

# 创建(期中和期末一样的值)

dic = {
    ‘张三‘:[150,150,150,150],
    ‘李四‘:[0,0,0,0]
}
df = DataFrame(data=dic,index=[‘语文‘,‘数学‘,‘英语‘,‘理综‘])
qizhong = df
qimo = df
#求平均:

(qizhong+qimo)/2

练习2:
使用tushare包获取某股票的历史行情数据。
输出该股票所有收盘比开盘上涨3%以上的日期。
输出该股票所有开盘比前日收盘跌幅超过2%的日期。
假如我从2010年1月1日开始,每月第一个交易日买入1手股票,每年最后一个交易日卖出所有股票,到今天为止,我的收益如何?
安装 tushare 模块

  pip install tushare

import tushare as tsdf = ts.get_k_data(code=‘600519‘,start=‘2000-01-01‘)

 # 将时间作为索引
  #将请求的数据存储起来
  df.to_csv(‘./600519.csv‘)

#将600519.csv文件中的数据读取到df, 索引,时间类型
  df = pd.read_csv(‘./600519.csv‘,index_col=‘date‘,parse_dates=[‘date‘])
  # 删除无用的列,1表示列,并同步映射原数据
  df.drop(labels=‘Unnamed: 0‘,axis=1,inplace=True)

#展示前五行数据

df.head(5)

#重新划定交易范围

df = df[‘2010-01‘:‘2019-06‘]
df #2010-2019年所有的交易数据
#将df中所有月的第一个交易日对应的行数据取出(数据的重新取样)
df_monthly = df.resample(‘M‘).first()
# 每年的最后一个交易日
df_yearly = df.resample(‘A‘).last()
df_yearly = df_yearly[:-1]
price_last = df[‘open‘][-1]

#Pandas提供了resample函数用便捷的方式对时间序列进行重采样,根据时间粒度的变大或者变小分为降采样和升采样:
df_monthly = df.resample("M").first()
df_yearly = df.resample("A").last()[:-1] #去除最后一年
cost_money = 0
hold = 0 #每年持有的股票
for year in range(2010, 2020):
    #买股票要花的钱 str(year)可获取某一年的所有数据
    cost_money -= df_monthly.loc[str(year)][‘open‘].sum()*100
    hold += len(df_monthly[str(year)][‘open‘]) * 100

    if year != 2019:      卖股票收入的钱
        cost_money += df_yearly[str(year)][‘open‘][0] * hold
        hold = 0 #每年持有的股票
 #2019 年买股票的钱
cost_money += hold * price_last

print(cost_money)

原文地址:https://www.cnblogs.com/sc-1067178406/p/10981829.html

时间: 2024-10-07 16:21:15

数据分析 --- 02.Pandas的相关文章

[数据分析工具] Pandas 功能介绍(二)

条件过滤 我们需要看第一季度的数据是怎样的,就需要使用条件过滤 体感的舒适适湿度是40-70,我们试着过滤出体感舒适湿度的数据 最后整合上面两种条件,在一季度体感湿度比较舒适的数据 列排序 数据按照某列进行排序 “by”参数可以使用字符串,也可以是列表,ascending 的参数也可以是单个值或者列表 ascending 默认值是 True 列中的每行上的 apply 函数 在前一篇的增加列的部分,根据风速计算人体感觉是否舒适,为了功能的演示,在这里使用 DataFrame 的 apply 方法

Python 数据分析:Pandas 缺省值的判断

Python 数据分析:Pandas 缺省值的判断 背景 我们从数据库中取出数据存入 Pandas None 转换成 NaN 或 NaT.但是,我们将 Pandas 数据写入数据库时又需要转换成 None,不然就会报错.因此,我们就需要处理 Pandas 的缺省值. 样本数据 id name password sn sex age amount content remark login_date login_at created_at 0 1 123456789.0 NaN NaN NaN 20

Python数据分析之pandas学习

Python中的pandas模块进行数据分析. 接下来pandas介绍中将学习到如下8块内容:1.数据结构简介:DataFrame和Series2.数据索引index3.利用pandas查询数据4.利用pandas的DataFrames进行统计分析5.利用pandas实现SQL操作6.利用pandas进行缺失值的处理7.利用pandas实现Excel的数据透视表功能8.多层索引的使用 一.数据结构介绍 在pandas中有两类非常重要的数据结构,即序列Series和数据框DataFrame.Ser

Python中的结构化数据分析利器-Pandas简介

Pandas是python的一个数据分析包,最初由AQR Capital Management于2008年4月开发,并于2009年底开源出来,目前由专注于Python数据包开发的PyData开发team继续开发和维护,属于PyData项目的一部分.Pandas最初被作为金融数据分析工具而开发出来,因此,pandas为时间序列分析提供了很好的支持. Pandas的名称来自于面板数据(panel data)和python数据分析(data analysis).panel data是经济学中关于多维数

数据分析:pandas 基础

pandas 是基于 Numpy 构建的含有更高级数据结构和工具的数据分析包 类似于 Numpy 的核心是 ndarray,pandas 也是围绕着 Series 和 DataFrame 两个核心数据结构展开的 .Series 和 DataFrame 分别对应于一维的序列和二维的表结构.pandas 约定俗成的导入方法如下: lang:python from pandas import Series,DataFrame import pandas as pd <br /> Series Ser

python数据分析工具——Pandas、StatsModels、Scikit-Learn

Pandas Pandas是 Python下最强大的数据分析和探索工具.它包含高级的数据结构和精巧的工具,使得在 Python中处理数据非常快速和简单. Pandas构建在 Numpy之上,它使得以 Numpy为中心的应用很容易使用.Pandas的功能非常强大,支持类似于SQL的数据增.删.查.改,并且带有丰富的数据处理函数;支持时间序列分析功能;支持灵活处理缺失数据等. Pandas的安装相对来说比较容易,安装好 Numpy之后,就可以直接安装了,通过pip install pandas或下载

AI - MLCC - 04 - 使用TF的基本步骤02 - Pandas 简介

原文链接:https://colab.research.google.com/notebooks/mlcc/intro_to_pandas.ipynb 1- Pandas HomePage : http://pandas.pydata.org/ Docs : http://pandas.pydata.org/pandas-docs/stable/index.html 针对Python语言的开源数据分析处理工具,可以提供高性能.易用的数据结构: 主要数据结构 DataFrame: 数据框架是用于数

基于 Python 和 Pandas 的数据分析(2) --- Pandas 基础

在这个用 Python 和 Pandas 实现数据分析的教程中, 我们将明确一些 Pandas 基础知识. 加载到 Pandas Dataframe 的数据形式可以很多, 但是通常需要能形成行和列的数据集. 所以可以是如下的 dictionary 的形式: web_stats = {'Day':[1,2,3,4,5,6], 'Visitors':[43,34,65,56,29,76], 'Bounce Rate':[65,67,78,65,45,52]} 我们可以通过如下方式把这个 dictio

利用Python进行数据分析(15) pandas基础: 字符串操作

  字符串对象方法 split()方法拆分字符串: strip()方法去掉空白符和换行符: split()结合strip()使用: "+"符号可以将多个字符串连接起来: join()方法也是连接字符串,比较它和"+"符号的区别: in关键字判断一个字符串是否包含在另一个字符串中: index()方法和find()方法判断一个子字符串的位置: index()方法和find()方法的区别是:如果不包含子字符串,index()会抛出一个异常,而find()会返回-1. c