Ⅰ pandas如何统计excel中列数据的行数
准备测试数据:
运行效果展示
附上实现代码:
#!/usr/bin/env pythonimport pandas as pdOPENPATH = 'test.xls'SAVEPATH = 'test1.xls'def total_count(path=OPENPATH, sheetname='testsheet'):df = pd.read_excel(path, sheet_name=sheetname, names=['值', '计数'])# 获取统计项目item_name = set(df['值'])# 创建字典统计total_dict = dict(zip([i for i in item_name], [0 for _ in range(len(item_name))]))# 遍历”值“列,逐个统计数量for index, item in enumerate(df['值']):# 如果在set中if item in item_name:# 加入计数统计total_dict[item] += df['计数'][index]# 返回return total_dictdef datato_excel(path=SAVEPATH, sheet_name='total', data_dict={}):report_df = pd.DataFrame.from_dict(data_dict,orient='index')xl_writer = pd.ExcelWriter(path)report_df.to_excel(xl_writer, sheet_name)try:xl_writer.save()print('Save completed')except:print('Error in saving file')if __name__ == "__main__":datato_excel(data_dict=total_count())
不知道这是不是您想要的结果,如果有帮助,请采纳一下,谢谢!
Ⅱ 怎样得到pandas中dataframe的行数和列数
df.shape 返回元组(行,列)
Ⅲ python panda 统计一列有多少数据
创建数据通过Python的zip构造出一元组组成的列表作为DataFrame的输入数据rec。In [3]: import pandas as pdIn [4]: import randomIn [5]: num = random.sample(xrange(10000, 1000000), 5)In [6]: numOut[6]: [244937, 132008, 278446, 613409, 799201]In [8]: names = "hello the cruel world en".split()In [9]: namesOut[9]: ['hello', 'the', 'cruel', 'world', 'en']In [10]: rec = zip(names, num)In [15]: data = pd.DataFrame(rec, columns = [u"姓名",u"业绩" ])In [16]: dataOut[16]:姓名 业绩0 hello 2449371 the 1320082 cruel 2784463 world 6134094 en 799201 DataFrame方法函数的第一个参数是数据源,第二个参数columns是输出数据表的表头,或者说是表格的字段名。导出数据csvWindows平台上的编码问题,我们可以先做个简单处理,是ipython-notebook支持utf8.import sysreload(sys)sys.setdefaultencoding("utf8")接下来可以数据导出了。In [31]: dataOut[31]:姓名 业绩0 hello 2449371 the 1320082 cruel 2784463 world 6134094 en 799201 #在ipython-note里后加问号可查帮助,q退出帮助In [32]: data.to_csv?In [33]: data.to_csv("c:\\out.csv", index = True, header = [u"雇员", u"销售业绩"])将data导出到out.csv文件里,index参数是指是否有主索引,header如果不指定则是以data里columns为头,如果指定则是以后边列表里的字符串为表头,但要注意的是header后的字符串列表的个数要和data里的columns字段个数相同。可到c盘用Notepad++打开out.csv看看。简单的数据分析In [43]: dataOut[43]:姓名 业绩0 hello 2449371 the 1320082 cruel 2784463 world 6134094 en 799201
Ⅳ Pandas-DataFrame基础知识点总结
DataFrame是一种表格型数据结构,它含有一组有序的列,每列可以是不同的值。DataFrame既有行索引,也有列索引,它可以看作是由Series组成的字典,不过这些Series公用一个索引。 DataFrame的创建有多种方式,不过最重要的还是根据dict进行创建,以及读取csv或者txt文件来创建。这里主要介绍这两种方式。
根据字典创建
DataFrame的行索引是index,列索引是columns,我们可以在创建DataFrame时指定索引的值:
使用嵌套字典也可以创建DataFrame,此时外层字典的键作为列,内层键则作为索引:
我们可以用index,columns,values来访问DataFrame的行索引,列索引以及数据值,数据值返回的是一个二维的ndarray
读取文件 读取文件生成DataFrame最常用的是read_csv,read_table方法。该方法中几个重要的参数如下所示:
其他创建DataFrame的方式有很多,比如我们可以通过读取mysql或者mongoDB来生成,也可以读取json文件等等,这里就不再介绍。
在DataFrame的处理中经常会遇到轴的概念,这里先给大家一个直观的印象,我们所说的axis=0即表示沿着每一列或行标签索引值向下执行方法,axis=1即表示沿着每一行或者列标签模向执行对应的方法。
索引、切片 我们可以根据列名来选取一列,返回一个Series:
我们还可以选取多列或者多行:
当然,在选取数据的时候,我们还可以根据逻辑条件来选取:
pandas提供了专门的用于索引DataFrame的方法,即使用ix方法进行索引,不过ix在最新的版本中已经被废弃了,如果要是用标签,最好使用loc方法,如果使用下标,最好使用iloc方法:
修改数据 可以使用一个标量修改DataFrame中的某一列,此时这个标量会广播到DataFrame的每一行上:
也可以使用一个列表来修改,不过要保证列表的长度与DataFrame长度相同:
可以使用一个Series,此时会根据索引进行精确匹配:
重新索引 使用reindex方法对DataFrame进行重新索引。对DataFrame进行重新索引,可以重新索引行,列或者两个都修改,如果只传入一个参数,则会从新索引行:
填充数据只能按行填充,此时只能对行进行重新索引:
丢弃指定轴上的值 可以使用drop方法丢弃指定轴上的值,不会对原DataFrame产生影响
算术运算 DataFrame在进行算术运算时会进行补齐,在不重叠的部分补足NA:
可以使用fill_value方法填充NA数据,不过两个df中都为NA的数据,该方法不会填充:
函数应用和映射 numpy的元素级数组方法,也可以用于操作Pandas对象:
另一个常见的操作是,将函数应用到由各列或行所形成的一维数组上。DataFrame的apply方法即可实现此功能。
元素级的Python函数也是可以用的,使用applymap方法:
排序和排名 对于DataFrame,sort_index可以根据任意轴的索引进行排序,并指定升序降序
DataFrame也可以按照值进行排序:
汇总和计算描述统计 DataFrame中的实现了sum、mean、max等方法,我们可以指定进行汇总统计的轴,同时,也可以使用describe函数查看基本所有的统计项:
DataFrame也实现了corr和cov方法来计算一个DataFrame的相关系数矩阵和协方差矩阵,同时DataFrame也可以与Series求解相关系数。
处理缺失数据 Pandas中缺失值相关的方法主要有以下三个: isnull方法用于判断数据是否为空数据; fillna方法用于填补缺失数据; dropna方法用于舍弃缺失数据。 上面两个方法返回一个新的Series或者DataFrame,对原数据没有影响,如果想在原数据上进行直接修改,使用inplace参数:
对DataFrame来说,dropna方法如果发现缺失值,就会进行整行删除,不过可以指定删除的方式,how=all,是当整行全是na的时候才进行删除,同时还可以指定删除的轴。
DataFrame填充缺失值可以统一填充,也可以按列填充,或者指定一种填充方式:
Ⅳ python判断数据框有几行几列
启动ipythonnotebook,加载pylab环境:ipythonnotebook–pylab=inlinepandas提供了io工具可以将大文件分块读取,测试了一下性能,完整加载9800万条数据也只需要263秒左右,还是相当不错了。importpandasaspdreader=pd.read_csv('dat
Ⅵ python 查看dataframe每列有多少个不同元素
方法一:
mylist = set(say)#say为所要统计的列表
for item in mylist: #将列表中的元素无重复的抽取出来,赋值给另一个列表
print item + str( say.count(item)) #list.count(item) 输出item在list中出现的次数
方法二:
counts = { } #字典for x in time_zones: #time_zones 为列表if x in counts:counts[x] += 1else:counts[x] = 1print counts
方法三:
(Series与Datafram用法相同)
import numpy as np
import pandas as pd
from pandas import DataFrame
from pandas import Series
ss = Series(['Tokyo', 'Nagoya', 'Nagoya', 'Osaka', 'Tokyo', 'Tokyo'])
ss.value_counts() #value_counts 直接用来计算series里面相同数据出现的频率
(6)pandas怎么判定文件有多少列扩展阅读:
python函数的其他高级用法
1.使用函数变量:
Python 的函数也是一种值:所有函数都是 function 对象,这意味着可以把函数本身赋值给变量,就像把整数、浮点数、列表、元组赋值给变量一样。
2.使用函数作为函数形参:
有时候需要定义一个函数,该函数的大部分计算逻辑都能确定,但某些处理逻辑暂时无法确定,这意昧着某些程序代码需要动态改变,如果希望调用函数时能动态传入这些代码,那么就需要在函数中定义函数形参,这样即可在调用该函数时传入不同的函数作为参数,从而动态改变这段代码。
3.使用函数作为返回值:
程序中,定义了一个 get_math_func() 函数,该函数将返回另一个函数。接下来在 get_math_func() 函数体内的 ①、②、③ 号粗体字代码分别定义了三个局部函数,最后 get_math_func() 函数会根据所传入的参数,使用这三个局部函数之一作为返回值。
在定义了会返回函数的 get_math_func() 函数之后,接下来程序调用 get_math_func() 函数时即可返回所需的函数。
Ⅶ 我想算出第一行有几列,读取的是csv文件,但不知道为什么算不出来,代码如下
#DataFrame没有直接使用下标的方式#改为s=len(data.loc[0])prints
Ⅷ pandas 怎么根据一列的数据的值的情况判断来生成另外一列的数值
如果A列大于等于60,B列返回1,否则返回0,那么在B2单元格输入以下公式,然后向下填充公式=IF(A2>=60,1,0)
Ⅸ pandas读取excel文件指定列
读取Excel文件,指定列需要在软件中点击文档表格插入开启。然后找到信息指定功能。选定文件进行文件的行列,对比标定列项来进行读取。