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基础学习的更多相关文章

  1. Pandas基础学习与Spark Python初探

    摘要:pandas是一个强大的Python数据分析工具包,pandas的两个主要数据结构Series(一维)和DataFrame(二维)处理了金融,统计,社会中的绝大多数典型用例科学,以及许多工程领域 ...

  2. pandas基础学习一

    生成对象 用值列表生成 Series 时,Pandas 默认自动生成整数索引: In [3]: s = pd.Series([1, 3, 5, np.nan, 6, 8]) In [4]: s Out ...

  3. Pandas 基础学习

    加载数据 Fun:pandas.read_csv >>> import pandas >>> food_info = pandas.read_csv("f ...

  4. numpy+pandas 基础学习

    #-*- coding:utf-8 -*- import numpy as np; data1=[1,2,3,4,5] array1=np.array(data1) #创建数组/矩阵 # 使用nump ...

  5. Python 读取UCI iris数据集分析、numpy基础学习

    python基础.numpy使用.io读取数据集.数据处理转换与简单分析.读取UCI iris数据集中鸢尾花的萼片.花瓣长度数据,进行数据清理,去重,排序,并求出和.累积和.均值.标准差.方差.最大值 ...

  6. python学习笔记(四):pandas基础

    pandas 基础 serise import pandas as pd from pandas import Series, DataFrame obj = Series([4, -7, 5, 3] ...

  7. Pandas 基础(1) - 初识及安装 yupyter

    Hello, 大家好, 昨天说了我会再更新一个关于 Pandas 基础知识的教程, 这里就是啦......Pandas 被广泛应用于数据分析领域, 是一个很好的分析工具, 也是我们后面学习 machi ...

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

    在这个用 Python 和 Pandas 实现数据分析的教程中, 我们将明确一些 Pandas 基础知识. 加载到 Pandas Dataframe 的数据形式可以很多, 但是通常需要能形成行和列的数 ...

  9. 零基础学习Python数据分析

    网上虽然有很多Python学习的教程,但是大多是围绕Python网页开发等展开.数据分析所需要的Python技能和网页开发等差别非常大,本人就是浪费了很多时间来看这些博客.书籍.所以就有了本文,希望能 ...

随机推荐

  1. 关于react-redux中Provider、connect的解析

    Provider 是什么 react-redux 提供的一个 React 组件 作用 把 store 提供给其子组件 //使用 redux 的 createStore 方法创建的一个 store co ...

  2. truffle开发一个简单的Dapp

    1.安装Truffle:npm install -g truffle 2.建立项目目录并进入:mkdir pet-shop-tutorial cd pet-shop-tutorial 3.使用truf ...

  3. mysql初识(5)

    将mysql数据库内的表导出为execel格式文件: 方法1:mysql命令:select * into outfile '/tmp/test.xls' from table_name;(需要注意的是 ...

  4. Xcode 自动打包之旅【本文摘自智车芯官网】

    由于公司项目很多,作为iOS端的开发工程师,在打包和上传App Store过程中超级费时,而且往往会有频繁更改需求重新打包.上传的情况.这些过程让我不胜其烦.之前有听说过自动打包,一直没有时间尝试,此 ...

  5. 转---详细的Android开发环境搭建教程

    五步搞定Android开发环境部署——非常详细的Android开发环境搭建教程 引言   在windows安装Android的开发环境不简单也说不上算复杂,本文写给第一次想在自己Windows上建立A ...

  6. XJOI NOIP模拟题2

    第一题 组合计数 分析: 从前往后一位一位的计算 先算第一位比t小的数目,再算第一位与t[1]相同,第2位比t小的个数以此类推 先预处理一个数组h,h[i]表示从1~it串与s串不同的位数 对于第i位 ...

  7. Str 函数

    Str 函数 Visual Studio 2005 返回数字的 String 表示形式.     Public Shared Function Str(ByVal Number As Object) ...

  8. CF893F Subtree Minimum Query 解题报告

    CF893F Subtree Minimum Query 输入输出格式 输入格式: The first line contains two integers \(n\) and \(r\) ( \(1 ...

  9. java禁止实例化的工具类

    public class Q { /** * @param args */ public static void main(String[] args) { new Person() } } clas ...

  10. Java多线程-一个简单的线程,实现挂起和恢复的功能

    public class MySprite implements Runnable { /* * 线程用变量 */ private boolean running = false; private b ...