一、pd.cut()与pd.qcut()的区别

 假设有一组人员数据,而你希望将它们划分为不同的年龄组

ages = [18,20,22,25,27,21,23,37,31,61,45,32]
bins = [18,25,35,60,100]
cats = pd.cut(ages, bins)#将ages中的每个元素划分到bins组内
cats
'''
[NaN, (18, 25], (18, 25], (18, 25], (25, 35], ..., (35, 60], (25, 35], (60, 100], (35, 60], (25, 35]]
Length: 12
Categories (4, interval[int64]): [(18, 25] < (25, 35] < (35, 60] < (60, 100]]
四个分组采取左开右闭方式,不存在于某区间内,则为NaN
'''
#添加分组标签
group_names = ['Youth', 'YoungAdult', 'MiddleAged', 'Senior']
cats = pd.cut(ages, bins, labels=group_names)
'''
[NaN, Youth, Youth, Youth, YoungAdult, ..., MiddleAged, YoungAdult, Senior, MiddleAged, YoungAdult]
Length: 12
Categories (4, object): [Youth < YoungAdult < MiddleAged < Senior]
''' '''
qcut是类似cut的函数,但是qcut是使用的样本分位数,所以得到大小基本相等的面元。即每个面元,每个分组的数据数量基本相同。 pd.qcut(data,4) 即将数据data均匀撒在四个分组中
'''
data = [x for x in range(20)]
pd.qcut(data, 4,labels=[0,1,2,3])
'''
[0, 0, 0, 0, 0, ..., 3, 3, 3, 3, 3]
Length: 20
Categories (4, int64): [0 < 1 < 2 < 3]
'''

二、当数据列中存在NA值时,想对这些NA值进行填充

import pandas as pd
import numpy as np train_file = "train.csv"
test_file = "test.csv"
test_result_file = "gender_submission.csv" train = pd.read_csv(train_file)
test = pd.read_csv(test_file)
test_y = pd.read_csv(test_result_file)#test也有标签,用于核对模型对test数据预测的结果好坏 full_data = [train,test]
print(train.info()) #比如有一数据列Age,存在NA值,使用的填充值的范围[(mean - std) ,(mean + std)]
for dataset in full_data:
age_avg = dataset['Age'].mean()
age_std = dataset['Age'].std() age_null_count = dataset['Age'].isnull().sum()
age_default_list = np.random.randint(low=age_avg-age_std,high=age_avg+age_std,size=age_null_count,) dataset['Age'][np.isnan(dataset['Age'])] = age_default_list
dataset['Age'] = dataset['Age'].astype(int)

三、如何更改pandas DataFram的列名

 有两种方法:df.columns和df.renames

import pandas as pd
df = pd.DataFrame({'a':[1,2,3],'b':[4,5,6]})
print(df)
'''
a b
0 1 4
1 2 5
2 3 6
''' #一、修改列名a,b为A、B
df.columns = ['A','B']
print(df)
'''
A B
0 1 4
1 2 5
2 3 6
'''
#二、只修改列名A为a
df.rename(columns={'A':'a'})
'''
a B
0 1 4
1 2 5
2 3 6
'''

四、pandas中pd.loc和pd.iloc及pd.ix的区别

import pandas as pd
data = [[1,2,3],[4,5,6]]
index = ['A','B']
columns=['a','b','c']
df = pd.DataFrame(data=data, index=index, columns=columns)
'''
a b c
A 1 2 3
B 4 5 6
''' #loc——通过行标签索引行数据
df.loc['A']
'''
a 1
b 2
c 3
Name: A, dtype: int64
''' df.loc['B']
'''
a 4
b 5
c 6
Name: B, dtype: int64
''' #iloc——通过行号获取行数据
df.iloc[0]
'''
a 1
b 2
c 3
Name: A, dtype: int64
''' df.iloc[1]
'''
a 4
b 5
c 6
Name: B, dtype: int64
''' #ix——结合前两种的混合索引
df.ix['A']
'''
a 1
b 2
c 3
Name: A, dtype: int64
''' df.ix[0]
'''
a 1
b 2
c 3
Name: A, dtype: int64
'''

五、pandas如何去掉数据集某列或者某行

 pd.drop(),要注意如果想直接作用到原对象上,可传入参数inplace=True,即:pd.drop(inplace=True)

df = pd.DataFrame(np.arange(12).reshape(3,4), columns=['A','B','C','D'])
df
'''
A B C D
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
''' df.drop(['B','C'],axis=1)
'''
A D
0 0 3
1 4 7
2 8 11
''' #去掉某行
df.drop([0,1])
'''
A B C D
2 8 9 10 11
''' #传入参数inplace=True,直接作用于原对象
df.drop([1,2],inplace=True)
df
'''
A B C D
0 0 1 2 3
'''

六、pd.Series()使用

 Series是一种类似于一维数组的对象,它由一组数据以及一组与之相关的数据标签(即索引)组成

Se = pd.Series([4, 7, -5, 3])
Se
'''
0 4
1 7
2 -5
3 3
dtype: int64
''' Se = pd.Series([4,7, -5, 3], index=['d', 'b', 'a', 'c'])
Se
'''
d 4
b 7
a -5
c 3
dtype: int64
''' #取值
Se['a']
'''
-5
''' Se['b']
'''
7
''' #元素为int时计算
Se * 2
'''
d 8
b 14
a -10
c 6
dtype: int64
'''

七、pd合并数据集

 pd.concat()用法

s1 = pd.DataFrame([0,1], index=['a', 'b'])
s2 = pd.DataFrame([2,3], index=['c', 'd'])
s3 = pd.DataFrame([4,5], index=['e', 'f'])
'''
s1
0
a 0
b 1 s2
0
c 2
d 3 s3
0
e 4
f 5
'''
#默认按照行合并
pd.concat( [s1,s2,s3] )
'''
0
a 0
b 1
c 2
d 3
e 4
f 5
''' #axis=1,按照列合并,如果索引不同,用NAN填充
pd.concat([s1,s2,s3],axis=1)
'''
0 0 0
a 0.0 NaN NaN
b 1.0 NaN NaN
c NaN 2.0 NaN
d NaN 3.0 NaN
e NaN NaN 4.0
f NaN NaN 5.0
'''
#axis=1,按照列合并,如果索引相同,s1和s2,s3索引都是a,b
pd.concat([s1,s2,s3],axis=1)
'''
0 0 0
a 0 2 4
b 1 3 5
'''

 

八、利用pd进行数据筛选

#筛选出多列
train[ ['FamilySize','IsAlone'] ] #按照列的条件进行筛选
train['IsAlone'][train['FamilySize']==1] = 1#将FamilySize域为1的IsAlone域赋值为1

  

九、关于low_memory=False

import pandas as pd
data = pd.read_csv('银行产品推荐数据.csv')
'''
Warning (from warnings module):
File "Bank.py", line 1
import pandas as pd
DtypeWarning: Columns (11) have mixed types. Specify dtype option on import or set low_memory=False.
''' #有时出现上面的错误,改正方法
#方法一
data = pd.read_csv('银行产品推荐数据.csv', low_memory=False) #方法二,优于方法一
data = pd.read_csv( '银行产品推荐数据.csv', dtype={ "Is Employee's Spouse":str } )

 pandas读取csv文件默认是按块读取的,即不一次性全部读取;

 另外pandas对数据的类型是完全靠猜的,所以pandas每读取一块数据就对csv字段的数据类型进行猜一次,所以有可能pandas在读取不同块时对同一字段的数据类型猜测结果不一致

 low_memory=False 参数设置后,pandas会一次性读取csv中的所有数据,然后对字段的数据类型进行唯一的一次猜测。这样就不会导致同一字段的Mixed types问题了。

 但是这种方式真的非常不好,一旦csv文件过大,就会内存溢出;所以推荐用方法二

十、value_counts转换为字典:to_dict()

dataframe[field].astype(int).value_counts().to_dict()

十一、筛选满足条件的行

df[df['column name'].map(len) < 2]
# df为整个数据框

pandas使用的更多相关文章

  1. pandas基础-Python3

    未完 for examples: example 1: # Code based on Python 3.x # _*_ coding: utf-8 _*_ # __Author: "LEM ...

  2. 10 Minutes to pandas

    摘要   一.创建对象 二.查看数据 三.选择和设置 四.缺失值处理 五.相关操作 六.聚合 七.重排(Reshaping) 八.时间序列 九.Categorical类型   十.画图      十一 ...

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

      字符串对象方法 split()方法拆分字符串: strip()方法去掉空白符和换行符: split()结合strip()使用: "+"符号可以将多个字符串连接起来: join( ...

  4. 利用Python进行数据分析(10) pandas基础: 处理缺失数据

      数据不完整在数据分析的过程中很常见. pandas使用浮点值NaN表示浮点和非浮点数组里的缺失数据. pandas使用isnull()和notnull()函数来判断缺失情况. 对于缺失数据一般处理 ...

  5. 利用Python进行数据分析(12) pandas基础: 数据合并

    pandas 提供了三种主要方法可以对数据进行合并: pandas.merge()方法:数据库风格的合并: pandas.concat()方法:轴向连接,即沿着一条轴将多个对象堆叠到一起: 实例方法c ...

  6. 利用Python进行数据分析(9) pandas基础: 汇总统计和计算

    pandas 对象拥有一些常用的数学和统计方法.   例如,sum() 方法,进行列小计:   sum() 方法传入 axis=1 指定为横向汇总,即行小计:   idxmax() 获取最大值对应的索 ...

  7. 利用Python进行数据分析(8) pandas基础: Series和DataFrame的基本操作

    一.reindex() 方法:重新索引 针对 Series   重新索引指的是根据index参数重新进行排序. 如果传入的索引值在数据里不存在,则不会报错,而是添加缺失值的新行. 不想用缺失值,可以用 ...

  8. 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍

    一.pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主要目的是为了数据分析.它提供了大量高级的数据结构和对数据处理的方法. pandas 有两个主要的数据结构 ...

  9. pandas.DataFrame对行和列求和及添加新行和列

    导入模块: from pandas import DataFrame import pandas as pd import numpy as np 生成DataFrame数据 df = DataFra ...

  10. pandas.DataFrame排除特定行

    使用Python进行数据分析时,经常要使用到的一个数据结构就是pandas的DataFrame 如果我们想要像Excel的筛选那样,只要其中的一行或某几行,可以使用isin()方法,将需要的行的值以列 ...

随机推荐

  1. 读书笔记(chapter7)

    第七章 链接 链接是将各种代码和数据部分收集起来并且组合成为一个单一文件的过程.1.这个文件可被加载到存储器并执行:2.也可以执行于加载时,也就是在程序被加载器加载到存储器并执行:3.甚至可以执行于运 ...

  2. LINUX第三次实践:程序破解

    LINUX第三次实践:程序破解 标签(空格分隔): 20135328陈都 一.掌握NOP.JNE.JE.JMP.CMP汇编指令的机器码 NOP:NOP指令即"空指令".执行到NOP ...

  3. 我的集合学习笔记--LinkedList

    一,Node节点: /** * 存储元素基本单位 */ public class Node { Object data; Node pre; Node next; public Node(Node p ...

  4. Linux查询用户和组的命令

    root@PC-RENGUOQIANG:~# cat /etc/passwd root:x:::root:/root:/bin/bash daemon:x:::daemon:/usr/sbin:/us ...

  5. Delphi的idhttp报IOHandler value is not valid错误的原因[转]

    出现这种问题的原因是由于访问的 URL地址为https或存在其跳转地址为https. 首先单纯使用idhttp是只能访问http,而https则需要搭配IdSSLIOHandlerSocketOpen ...

  6. vue-devtools 的安装和使用

    vue-devtools的安装与使用 一.在github上下载压缩包,github下载地址:https://github.com/vuejs/vue-devtools 二.解压到本地的某盘 三.用你的 ...

  7. python删除数组元素导致跳过元素

    复现的情况大概可以写成这样 abc = [1, 2, 2, 3, 4] print abc for index, i in enumerate(abc): if i == 2: del abc[ind ...

  8. 浅谈cpu.idle和cpu.load

    1.概述 大家经常对一个系统的容量进行评估时,会参考cpu.idle和cpu.load指标,但是这两个指标到底在什么区间,表示系统是正常或者异常呢,业内有不同的说法.因此本文搜集一些资料,并对一个系统 ...

  9. python2 高级编程

    第一 正则表达式 1. 正则表达式意义 正则表达式是高级文本匹配模式,为搜索,匹配,替换提供了基础 2. 搜索与匹配的区别 搜索指在字符串任何部分查找 匹配指在字符串起始处查找 3. 编写正则表达式 ...

  10. python之打印日志logging

    import logging # 简单打印日志举例 logging.basicConfig(level=logging.DEBUG) # 设置日志级别,WARN logging.warning('Wa ...