pandas dataframe map代码求助

Python:Pandas:DataFrame基础(1) - wangyajie_11的博客 - CSDN博客
Python:Pandas:DataFrame基础(1)
在用python解决实际问题时,从磁盘文件读取数据是经常要做的工作。这篇文章
主要说一下python读取excel文件中的数据。利用python读取excel中的数据是一件
来读取的方式,在我看来这种方式已经足够简单了,以至于我不想再了解其他的方式。
要想使用这种方式,首先需要在代码中引入两个包:
`import numpy as np`
`import pandas as pd`
然后仅需要一行代码即可完成python读取excel的操作,这里给一个实际的代码:
`data = pd.read_excel('D:/homework.xlsx', index_col=0)`
"index_col=0"可以这样理解:把homework.xlsx中的第一列设置为主键。
以上这些,都太简单,不足以作为本文的正题。问题是,当把homework.xlsx
类型呢?这里不能想当然地认为data的访问方式类似于二维数组,这是大错特错的,
当然也不要以为data的访问方式很繁琐,如果真的很繁琐的话,我也不会在众多的读
的,记住了好几次,忘记了好几次。
下面主要通过实例的方式讲解:
首先,我得把excel中的数据读到data变量中
import numpy as np
import pandas as pd
data = pd.read_excel('D:/homework.xlsx', index_col=0)
print(data)
将data输出到控制台上,结果如下:
其中,“纳税人编号”是主键,并且,data中索引为0的列是“销售类型”这一列,被设置为主键的列不能算。
1、使用head()方法可以查看data的前几行数据(默认是前5行):
print(data.head())
输出结果如下:
除了默认前5行,也可以指定是前几行,例如:
print(data.head(3))
输出结果如下:
同理,使用tail()方法可以查看后几行数据(默认是后5行)。
2、查看data的索引
print(data.index)
输出结果如下:
3、查看data的列名
print(data.columns)
输出结果如下:
同理,查看data的数据值用data.values,查看描述性统计用data.describe(),转置数据用data.T。
对数据进行排序,用到了sort,参数可以指定根据哪一列数据进行排序,如data.sort(columns = u'维修毛利'),输出结果如下:
结束:好了,这篇文章到此结束,后面的文章有进一步的介绍。
相关文章推荐使用pandas的dataFrame实现的决策树算法
网上的决策树算法实现多使用的是列表的数据实现的,但是实际使用中DataFrame对数据前期处理更加友好。
因此编写了此决策树算法与大家分享。其中代码多有简陋之处,请大家留言改进。
决策树算法的基本介绍已经有很多文章了,这里不作过多介绍,请自行寻找。
训练创建树或子树:
如果数据集中数据记录为同一y分类,则返回此分类标签
如果数据集仅剩下2列,则返回此数据集中y分类较多的一类的标签(2列数据,1个是变量,另一个是y标签)
否则需要创建子树,调用最佳分类特征选择函数,选择最佳分类特征
确定最佳特征的分枝
for&每一分枝:
& & & & & 递归调用创建树方法,创建子树。
最佳分类特征选择函数:
计算基本信息熵
for 每一特征:
计算特征分枝后的信息熵
计算特征分枝后信息增益
选择最大信息增益
返回最佳分类特征
python代码如下:
#!/usr/bin/python
# encoding:utf-8
@author: Bruce
@file: dtrain.py
此决策树使用pandas中的dataFrame数据实现,要求dataFrame中指定一列为y标签。调用createtree方法训练。createtree有2个参数
第一个参数中数据DataFrame,第二个参数指定dataFrame中y标签的列名为str类型。
from math import log
import pandas as pd
import operator
import numpy as np
import matplotlib.pyplot as plt
#计算信息熵
def calcshannonent(dataset, re):
numentries = len(dataset)
#计算数据集每一分类数量
l = dataset.columns.tolist()
k = l.index('Survived')-1
s_k = pd.pivot_table(dataset, index=re, values=l[k], aggfunc=len)
#classlabel = set(dataset[re])
shannonent = 0.0
#每一分类的信息熵
for i in list(s_k):
prob = i / float(numentries)
shannonent += prob * log(prob, 2)
return shannonent
#对给定的数据集的指定特征的分类值进行分类
def splitdataset(dataset, axis, value):
retdataset = dataset[dataset[axis] == value]
del retdataset[axis]
return retdataset
#选择最佳分裂特征:
def chooseBestFeatureToSplit(dataset,re):
#分裂前的信息熵
baseEntroy = calcshannonent(dataset,re)
#信息增益及最佳分裂特征初始:
bestinfogain = 0.0
bestfeature = dataset.columns[1]
#对每一特征进行循环
for f in dataset.columns:
if f == 'Survived': continue
#获取当前特征的列表
featlist = dataset[f]
#确定有多少分裂值
uniqueVals = set(featlist)
#初始化当前特征信息熵为0
newEntrypoy = 0.0
#对每一分裂值计算信息熵
for value in uniqueVals:
#分裂后的数据集
subdataset = splitdataset(dataset, f ,value)
#计算分支的概率
prob = len(dataset[dataset[f]==value])/float(len(dataset))
#分裂后信息熵
newEntrypoy += prob*calcshannonent(subdataset, re)
# 计算信息增益
infogain =
newEntrypoy - baseEntroy
#如果信息增益最大,则替换原信息增益,并记录最佳分裂特征
if f != 'Survived':
if (infogain > bestinfogain):
bestinfogain = infogain
bestfeature = f
#返回最佳分裂特征号
return bestfeature
#确定分枝的主分类
def majority(labellist):
classcount = {}
#分类列表中的各分类进行投票
for vote in labellist:
if vote not in classcount.keys():
classcount[vote] =0
classcount[vote] += 1
#排序后选择最多票数的分类
sortedclasscount = sorted(classcount.iteritems(), key=operator.itemgetter(1), reverse=True)
#返回最多票数的分类的标签
return sortedclasscount[0][0]
def createtree(dataset, result):
'有2个参数,第一个是dataFrame类型的数据,第个是字符串类型的y标签'
#如果数据集的分类只有一个,则返回此分类,无需子树生长
classlist = list(dataset[result].values)
if classlist.count(classlist[0]) == len(classlist):
return classlist[0]
#如果数据集仅有1列变量,加y标签有2列,则返回此数据集的分类
if len(dataset.columns) == 2:
return majority(classlist)
bestfeat = chooseBestFeatureToSplit(dataset,result)
mytree = {bestfeat: {}}
#此节点分裂为哪些分枝
uniquevals = set(dataset[bestfeat])
#对每一分枝,递归创建子树
for value in uniquevals:
mytree[bestfeat][value] = createtree(splitdataset(dataset, bestfeat,value),result)
#完成后,返回决策树
return mytree
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:2119次
排名:千里之外
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'pandas学习(二)——dataframe数据的选取 - 简书
pandas学习(二)——dataframe数据的选取
本章主要利用双色球开奖数据来学习pandas的DataFrame数据选取,Series的统计功能,以及matplotlib画柱状图。
# -*- coding: utf-8 -*-
import pandas as pd
import numpy
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
# 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False
# 用来正常显示负号
# 读取数据
data_sheet = 'ssqexcle_result.xls'
all_data = pd.read_excel(data_sheet, parse_cols=(0, 2, 3, 4, 5, 6, 7, 8))
all_data['index'] = all_data['index'].astype(np.str)
# 输入期数,获取历史数据,本例获取历年的079期数据
history_data = all_data[[x.endswith('079') for x in all_data['index']]].copy()
history_red_ball = history_data.iloc[:, 1:6]
history_blue_ball = history_data.iloc[:, 7]
# 统计红球和篮球的出现次数
count_red_ball = history_red_ball.stack().value_counts()
count_blue_ball = history_blue_ball.value_counts()
plt.figure(1)
count_red_ball.plot(kind='bar', align='center')
plt.xlabel("红球数字")
plt.ylabel("次数")
plt.show()
plt.figure(2)
count_blue_ball.plot(kind='bar', align='center')
plt.xlabel("蓝球数字")
plt.ylabel("次数")
plt.show()
获取出来的历史数据如下所示:
画出来的 图如下所示:
1、红球历史数据次数统计图
2、蓝球历史数据次数统计图
数据以及代码下载地址:链接: 密码:87k6
stay foolish~
第1章 准备工作第2章 Python语法基础,IPython和Jupyter第3章 Python的数据结构、函数和文件第4章 NumPy基础:数组和矢量计算第5章 pandas入门第6章 数据加载、存储与文件格式第7章 数据清洗和准备第8章 数据规整:聚合、合并和重塑 pa...
f```from pandas import Series, DataFrameimport pandas as pd obj = Series([4, 7, -5, 3])obj2 = Series([4, 7, -5, 3], index=['d','b','a','c...
官方 10 分钟入门文档(http://pandas.pydata.org/pandas-docs/stable/10min.html)这是 pandas 的简短介绍,主要面向新用户。你可以看到更复杂的文档Cookbook(http://pandas.pydata.org/...
目录: 5.1 pandas 的数据结构介绍 5.1.1 Series 5.1.2 DataFrame 5.1.3索引对象 5.2基本功能 5.2.1重新索引 5.2.2丢弃指定轴上的项 5.2.3索引、选取和过滤 5.2.4算术运算和数据对齐 5.2.4.1在算术方法中填...
Pandas 秘籍 原文:Pandas Cookbook 译者:飞龙 协议:CC BY-NC-SA 4.0 第一章 1.1 从 CSV 文件中读取数据 您可以使用read_csv函数从CSV文件读取数据。 默认情况下,它假定字段以逗号分隔。 我们将从蒙特利尔(Montréa...
远方流浪的人,你不要哭 那些背井离乡的日子 既然选择了,那就好好过着 离开了温馨的家庭 不愿做温室那脆弱的花朵 此刻坚强着证明给大家看 外面漂泊不定的生活尽管苦 但是我们也得学会忍着不哭 因为哭也没用,哭也解决不了 所以还不如微笑着面对 我们曾流过汗,也受过伤 也尽管累着痛...
背景介绍 由于实验室项目的原因,最近学习了基于PNP方法的绝对位姿测量。如果场景的三维结构已知,利用多个控制点在三维场景中的坐标及其在图像中的透视投影坐标即可求解出摄像机坐标系与表示三维场景结构的世界坐标系之间的绝对位姿关系,包括绝对平移向量t以及旋转矩阵R,该类求解方法统...
在讨论你为什么会有处女情结之前,我们先要明确处女情结是什么处女情结是指男人认为还拥有第一次的女人更有价值的一种心理,一般评价这种心理大家都会从道德的层面,由于每个人对自己道德的解释各不相同,人们对这种心理都持不同观点,所以今天我们换个角度来看,从利益的角度来分析,我先推出两...
第二十二章 盗火线(2)回顾 第二十三章 准嫂子烧的饭
回到局长办公室,廖天明将帽子重重的扣在桌子上,眉毛皱起,前额拧成川字,眼睛怔怔地看着窗外,秘书陈峰也跟了进来,走到墙角柜台,提过热水瓶添水泡一杯茶,走到廖局长身后:“局长,喝茶......”
“陈秘书,今天的事...
第一次听说“拆书帮”的时候,我非常好奇,心想:拆书?肯定不能真的把一本书拆了吧?是把书的内容消化吸收吗?具体要怎么操作呢? 昨天,带着心中的疑问,我第一次参加了拆书活动。 过程跟想象中的大致一样:拆书,是一种把知识转化成能力的学习方法。 举个例子,“琳琳种种”同学分享了《活...pandas dataframe 代码求助_百度知道
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
pandas dataframe 代码求助
我有更好的答案
如果列明中包含空格、减号、加号等等的符号的时候,比如有一列的名字是&hello world&就不能用aa.hello world了。只能用a['hello world']
采纳率:97%
来自团队:
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包

我要回帖

更多关于 pandas 新建dataframe 的文章

 

随机推荐