pandas基础学习
1、导入两个数据分析重要的模块
import numpy as np
import pandas as pd
2、创建一个时间索引,所谓的索引(index)就是每一行数据的id,可以标识每一行的唯一值
dates = pd.date_range('20161024',periods=6)
3、创建一个6X4的数据:randn函数用于创建随机数,参数表示行数和列数,dates是上一步创建的索引列
df = pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('ABCD'))
4、使用字典来创建数据框,例如创建一个列名为A的数据框,索引不加则是自动创建的整数
例子1:df = pd.DataFrame({'A':np.random.randn(6)})
例子2:df = pd.DataFrame({'A':pd.Timestamp('20161024'),'B':pd.Series(1)})
假如字典内的数据长度不同,以最长的数据为准,比如B列有4行
df = pd.DataFrame({'A':pd.Timestamp('20161024'),'B':pd.Series(1,index=list(range(4)))})
5、查看数据
print(df.dtypes) #查看数据格式
print(df) #查看所有数据
print(df.head()) #查看指定前几行的数据,默认是前5行
print(df.tail()) #查看指定前几行的数据,默认是后5行
print(df.index) #查看数据索引
print(df.columns) #查看数据列名
print(df.values) #查看数据值
print(df.describe) #查看描述性统计
6、使用T来转置数据,也就是行列转换
print(df.T)
7、对数据进行排序,用到了sort,参数可以指定根据哪一列数据进行排序。
df = pd.DataFrame({'A':(22,44,33,11),'B':(111,222,333,444)})
print(df.sort(columns='A'))
8、数据的选择,选择数据就是用到了切片和loc、at方法
df['A'] 选择A列的操作
df[1:3] 还可以使用数组的切片操作,但是注意了,切片得到的是行数据,如果你想使用这个方法得到列,那就会出现错误
df['20161026':'20161028'] 可以使用行标签来指定输出的行,类似于切片
df.loc[dates[0]] DataFrame的loc方法是帮助选择数据的,比如选择索引位置为0的一行数据(注意我们是用dates作为索引的)
df.loc[:,['A','B']] 选择多列数据的写法
df.loc['20161026':'20161028',['A','B']] 选择局部数据,是行和列的交叉区域
df.loc[dates[0],'A'] 只选择某一个数据,可以指定行和列
df.loc[dates[0],'A'] at方法是专门用于获取某个值的
9、DataFrame切片操作
df.iloc[3] 使用iloc方法,提取第四行数据
df.iloc[3:5,0:2] 返回4-5行,1-2列数据
df.iloc[[1,2,4],[0,2]] 可以提取不连续行和列的数
df.iloc[1:3,:] 提取某一样或者某几行的数据,保证所有列都在,可以使用一个冒号来表示所有列
df.iloc[:,1:3] 所有行,也可以用冒号来表示
df.iloc[1,1] 提取某一个值,去掉所有冒号,比如取第2行第2列的这个数
df.iat[1,1] iat是专门提取某个数的方法,它的效率高更高,因此建议在提取单个数的时候用iat
10、Dataframe筛选数据
df[df.D>0] 筛选D列数据中大于0的行
df[(df.D>0)&(df.C<0)] 使用&符号可以实现多条件筛选,当然是用"|"符号也可以实现多条件,只不过他是或的关系。
df[['A','B']][(df.D>0)&(df.C<0)] 我们只需要A和B列数据,而D和C列数据都是用于筛选的,可以这样写:只返回了AB两列数据
可以使用insin方法来筛选特定的值:
alist = [0.05397,0.687087,0.36545]
print(df['D'].isin(alist))
11、单列数据格式的转换
df = pd.read_csv('000917.csv',encoding='gbk')
df = df[df['涨跌幅']!='None']
df['涨跌幅'] = df['涨跌幅'].astype(np.float64)
print(type(df.loc[2,'涨跌幅']))
12、统计名称的个数
df = pd.read_csv('000917.csv',encoding='gbk')
df = df[df['涨跌幅']!='None']
df['涨跌幅'] = df['涨跌幅'].astype(np.float64)
t = df['名称'].value_counts()
print(t)
##电广传媒 3519
##G 电 广 193
##电广实业 158
##Name: 名称, dtype: int64
12、操作多索引MultiIndex
# -*- coding: utf-8 -*-
import os
import pandas as pd
import numpy as np #建立一个带二重索引的DataFrame df = pd.DataFrame()
df['a'] = list(range(10,30,2))
df['b'] = df['a'] // 10 df.index.name = 'id'
df = df.set_index([df['b'],df.index],drop=False) #对带多重索引的dataframe取值一般使用xs df = df.xs(1,level='b') #选取第一级b=2,id=6
#df.xs((2,6))
#使用PD.IndexSlice可以更花式的
#这里因为使用的是loc,所以返回的是引用,可以修改原值
#IndexSlice中,每一级的index都要有对应的取值,全取则用”:”
#idx['b','id']
#idx = PD.IndexSlice
#df.loc[idx[:,[1,3,8]],'a'] print(df)
13、数据分组,数据分组的好处是你可以一次性计算得到所有分组中的统计量,比如想计算男女学生的平均成绩分别是多少
grouped = df.groupby('A') 对A列进行分组
grouped = df.groupby(['A','B']) 对A列和B列同时进行分组
14、字符串操作
s = pd.Series(list('ABCDEF'))
print(s.str.lower()) 转换小写
print(s.str.upper()) 转换大写
print(s.str.len()) 求长度
s = pd.Series(['a_b_c','c_a_b',np.nan,'f_g_h']) 切割字符串,转换成list
print(s.str.split('_'))
print(s.str.split('_').str.get(1)) 使用get方法获得列中的某个元素
print(s.str.replace('^a|b$','X',case=False)) 使用replace,replace的第一个参数是正则表达式,第二个参数是要替换成的字符串。
14、字符串提取数据
s = pd.Series(['a1','a2','b1','b2','c3','c'])
print(s.str.extract('[ab](\d)')) 提取一个
print(s.str.extract('([abc])(\d)')) 提取多个
print(s.str.extract('([abc])(\d)?')) 你要灵活使用问号,它表示可有可无,下面的方式可以匹配字符“c”
s.str.extract('(?P<letter>[abc](?P<digit>\d)') 输出的结果包含变量名(列名)
15、填充缺失值
df.fillna(0) 使用0替代缺失值
df.fillna('missing') 用一个字符串代替缺失值
df.fillna(method='pad') 用前一个数据代替NaN:method='pad'
df.fillna(method='bfill',limit=1) 用后一个数据代替
df.fillna(df.mean()) 使用平均数或者其他描述性统计量来代替NaN
df.fillna(df.mean()['one','two']) 可以选择哪一列进行缺失值的处理
16、删除缺失数据
df.dropna(axis=0) 选择删除行,使用参数axis=0,这是最常用的方法
df.dropna(axis=1) 选择删除列
17、值替换
df.replace(0,6) 将0替换为6
df.replace([0,1,2,3,4,5],[5,4,3,2,1,0]) 列表到列表的替换
df.replace({1:11,2:12}) 使用字典映射:将1替换为11,将2替换为12
方法可以用在列上
pandas基础学习的更多相关文章
- Pandas基础学习与Spark Python初探
摘要:pandas是一个强大的Python数据分析工具包,pandas的两个主要数据结构Series(一维)和DataFrame(二维)处理了金融,统计,社会中的绝大多数典型用例科学,以及许多工程领域 ...
- pandas基础学习一
生成对象 用值列表生成 Series 时,Pandas 默认自动生成整数索引: In [3]: s = pd.Series([1, 3, 5, np.nan, 6, 8]) In [4]: s Out ...
- Pandas 基础学习
加载数据 Fun:pandas.read_csv >>> import pandas >>> food_info = pandas.read_csv("f ...
- numpy+pandas 基础学习
#-*- coding:utf-8 -*- import numpy as np; data1=[1,2,3,4,5] array1=np.array(data1) #创建数组/矩阵 # 使用nump ...
- Python 读取UCI iris数据集分析、numpy基础学习
python基础.numpy使用.io读取数据集.数据处理转换与简单分析.读取UCI iris数据集中鸢尾花的萼片.花瓣长度数据,进行数据清理,去重,排序,并求出和.累积和.均值.标准差.方差.最大值 ...
- python学习笔记(四):pandas基础
pandas 基础 serise import pandas as pd from pandas import Series, DataFrame obj = Series([4, -7, 5, 3] ...
- Pandas 基础(1) - 初识及安装 yupyter
Hello, 大家好, 昨天说了我会再更新一个关于 Pandas 基础知识的教程, 这里就是啦......Pandas 被广泛应用于数据分析领域, 是一个很好的分析工具, 也是我们后面学习 machi ...
- 基于 Python 和 Pandas 的数据分析(2) --- Pandas 基础
在这个用 Python 和 Pandas 实现数据分析的教程中, 我们将明确一些 Pandas 基础知识. 加载到 Pandas Dataframe 的数据形式可以很多, 但是通常需要能形成行和列的数 ...
- 零基础学习Python数据分析
网上虽然有很多Python学习的教程,但是大多是围绕Python网页开发等展开.数据分析所需要的Python技能和网页开发等差别非常大,本人就是浪费了很多时间来看这些博客.书籍.所以就有了本文,希望能 ...
随机推荐
- JavaWeb笔记(十二)日志
日志 日志信息根据用途与记录内容的不同,分为调试日志.运行日志.异常日志等. Java常用记录日志 logger log4j log4j2 logback 其中除了logger使用的概率较小,因此主要 ...
- android多点触控自由对图片缩放
在系统的相册中,观看相片就可以用多个手指进行缩放. 要实现这个功能,只需要这几步: 1.新建项目,在项目中新建一个ZoomImage.java public class ZoomImageView e ...
- maven第一个HelloWorld
1.Maven约定好的目录结构: maven01/src --main --java --package //包有多少级,加多少个子folder --新建一个HelloWorld.java --tes ...
- [C/C++] C/C++中数字与字符串之间的转换
在C中: 方法: 1.C标准库中的sprintf, sscanf 2.C标准库还提供了 atoi, atof, atol, atoll(C++11标准) 函数将字符串转换成int,double, lo ...
- 配合JAVA的AJAX使用
概要 Ajax是“Asynchronous JavaScript and XML”的简称,即异步的JavaScript和XML. readyState属性用来返回当前的请求状态,有五个可选值.分别是0 ...
- WebSocket添加事件监听器(6)
WebSocket编程遵循异步编程模型;打开socket后,只需要等待事件发生,而不需要主动向服务器轮询,所以需要在WebSocket对象中添加回调函数来监听事件. WebSocket对象有三个事件: ...
- 【CF edu 30 D. Merge Sort】
time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standa ...
- [COGS 1535] [ZJOI2004]树的果实 树状数组+桶
我们用树状数组做差就可以解决一切问题,我用桶排并用此来表示出第几大就可以直接求前缀和了 #include<cstdio> #include<algorithm> #define ...
- HTML5用canvas绘制五星红旗
在HTML5一览中,我们提到html 5被冠以很多高帽,其中最高的一顶.备受争议的就是"Flash杀手".IT评论界老喜欢用这个词了,杀手无处不在.不管是不是杀手,HTML 5引进 ...
- debounce 与 throttle 区别
原文地址:http://undefinedblog.com/debounce-and-throttle/ 二.什么是debounce 1. 定义 如果用手指一直按住一个弹簧,它将不会弹起直到你松 ...