查看原文
其他

【数据分析】一文教你玩转DataFrame

爬虫俱乐部 Stata and Python数据分析 2023-01-01

本文作者:李嘉琪,中南财经政法大学金融学院

本文编辑:郭培军

技术总编:孙一博

Stata&Python云端课程来啦!

      好消息好消息,爬虫俱乐部开辟小鹅通战场!!爬虫俱乐部隆重推出小鹅通网络课程,将Stata基础课程Stata进阶课程Python课程都上传至小鹅通平台,欢迎大家多多支持订阅!报名课程即可加入答疑群,对报名有任何疑问欢迎在公众号后台留言哦。如需了解详情,可以通过课程链接(https://appbqiqpzi66527.h5.xiaoeknow.com/homepage/10)或课程二维码进行访问哦~


引言

DataFrame是Python中Pandas库中的一种数据结构,它是表格形式,含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame 既有行索引也有列索引。它类似excel,是一种二维表。接下来,我们通过演示DataFrame的使用来帮助大家学习DataFrame。


一、创建DataFrame

DataFrame的单元格可以存放数值、字符串等,这和excel表很像,同时DataFrame可以设置列名columns与行名index。

DataFrame 构造方法如下:

pandas.DataFrame( data, index, columns, dtype, copy)#data:一组数据(ndarray、series, map, lists, dict 等类型)。#index:索引值,或者可以称为行标签。#columns:列标签,默认为 RangeIndex (0, 1, 2, …, n) 。#dtype:数据类型。#copy:拷贝数据,默认为 False。

创建DataFrame可以通过多种方法。

#使用numpy库创建import numpy as npimport pandas as pddates = pd.date_range('20220906', periods=8)df = pd.DataFrame(np.random.randn(8, 5), index=dates,columns=list('abcde'))df

输出结果如下:

#使用列表创建import pandas as pddata = [['Math',90],['English',92],['Chinese',73]]df = pd.DataFrame(data,columns=['course','score'],dtype=float)df#使用字典创建import pandas as pddata = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}]df = pd.DataFrame(data)df

输出结果:

#我们也可以指定索引值,举例假设现在班里以下几位同学的成绩被公示了出来import pandas as pddata = { "李明": [80, 80, 90], "张哲": [50, 40, 85], "冀思": [100, 90, 99], "张蒙": [50, 48, 45], "孙溢": [80, 98, 65], "李旺": [95, 48, 65],}df = pd.DataFrame(data, index = ["Math", "Chinese", "English"])df

输出结果如下:


二、DataFrame属性
print(df.loc["Math"]) #查看各位同学的数学成绩print(df.dtypes) #查看数据类型df.head() #当数据集庞大时,查看数据的基本情况通常只需查看顶部与尾部数据。#.head()和.tail()函数分别查看头部、尾部数据,默认为显示5条数据,也可以传入数字指定你想要查看的数据条数。df.tail(1) #查看尾部最后一条数据

输出结果如下:

#查看行列索引与值df.columnsdf.indexdf.values#查看行列数。使用shape查看行列数,参数为0表示查看行数,参数为1表示查看列数。print(df.shape[0])print(df.shape[1])

输出结果如下:


三、数据的描述性统计
Pandas数组也具有快速描述性统计方法,使用.describe()函数可以生成描述性统计,输出结果包括每一列的观测值数量、均值、标准差、最大值、最小值及重要的分位数。其语法结构如下:
DataFrame.describe(percentiles=None, include=None, exclude=None)

常用的描述性统计方法如下:

用上面的例子演示:

df.T.describe()

结果如图所示:

df.count() #计算每一列非空数值个数df.quantile(0.3) #0.3分位数 返回每一列的0.3分位数,df.min() #df.min()返回每一列的最小值df.idxmin() #df.idxmin()返回每一列最小值对应的索引。

输出结果如下:


四、数据处理
(1)append可以实现对原有数据追加一行的效果,选项ignore_index取“True”时忽略追加行的索引,取“False”时保留原索引。
s1=df.iloc[2]s1df.append(s1,ignore_index=True)df.append(s1,ignore_index=False)

结果如图:

(2)使用join可以将两个DataFrame合并,但只根据行列名合并,并且以作用的那个DataFrame的为基准。假如班上还有一位同学X的成绩也已经计算出来,可以使用join可以将两个DataFrame合并。

s2 = pd.DataFrame(['40', '60', '89'], index=["Math", "Chinese", "English"], columns=list('X'))df.join(s2)

输出结果如下:

当然,也可以通过其他方法。

(3)以上是合并两个Dataframe,如果要合并多个Dataframe,可以用list把几个Dataframe合并起来,然后使用concat转化为一个新的Dataframe。

df10 = pd.DataFrame([71, 82, 93], index=["Math", "Chinese", "English"], columns=['王琦'])df11 = pd.DataFrame([80, 99, 70],["Math", "Chinese", "English"], columns=['李琳'])df12 = pd.DataFrame([100, 80, 100],["Math", "Chinese", "English"], columns=['卫东'])list1 = [df.T,df10.T, df11.T, df12.T]list1df13 = pd.concat(list1)df13

输出结果如下:

DataFrame常用方法就介绍到这里了,综上所述,DataFrame可以帮助我们快速处理数据!熟能生巧,大家快来练习一下,祝大家早日玩转DataFrame!


(END)


重磅福利!为了更好地服务各位同学的研究,爬虫俱乐部将在小鹅通平台上持续提供金融研究所需要的各类指标,包括上市公司十大股东、股价崩盘、投资效率、融资约束、企业避税、分析师跟踪、净资产收益率、资产回报率、国际四大审计、托宾Q值、第一大股东持股比例、账面市值比、沪深A股上市公司研究常用控制变量等一系列深加工数据,基于各交易所信息披露的数据利用Stata在实现数据实时更新的同时还将不断上线更多的数据指标。我们以最前沿的数据处理技术、最好的服务质量、最大的诚意望能助力大家的研究工作!相关数据链接,请大家访问:(https://appbqiqpzi66527.h5.xiaoeknow.com/homepage/10)或扫描二维码:


最后,我们为大家揭秘雪球网(https://xueqiu.com/)最新所展示的沪深证券和港股关注人数增长Top10。




对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!





往期推文推荐

震惊,爬虫俱乐部竟是这样运营答疑群的?!

【数据分析-入门】一看就会!Numpy的创建、索引、切片与更新

带你玩转Stata编码
一言不合就teamviewer

【基础篇】循环语句的continue与break

      教你用Stata爬取全国疫情风险地区数据,原来这么简单!【数据结构】集合的使用方法      Stata爬取七普人口数据

       浅析Python的序列化与反序列化

     爬虫俱乐部的精彩答疑--爬虫为何失败?

       利用Stata批量制作学生证     【数据分析-入门】科学计算基本库—Numpy的简单使用      Stata绘图系列——玩转绘图通用选项之图例     【基础篇】数据类型介绍——list、tuple和range对象

覆盖北交所的“cnstock”复工了!

高考热度大数据爬虫——谁才是院校顶流

跨框架数据操作

      河南大学经济学院2022年Stata数据处理与爬虫技术开班仪式顺利召开

爬虫俱乐部的精彩答疑——local function

爬虫俱乐部精彩答疑——Python中的三种文件读取方法

关于我们 


   微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。

   武汉字符串数据科技有限公司一直为广大用户提供数据采集和分析的服务工作,如果您有这方面的需求,请发邮件到statatraining@163.com,或者直接联系我们的数据中台总工程司海涛先生,电话:18203668525,wechat: super4ht。海涛先生曾长期在香港大学从事研究工作,现为知名985大学的博士生,爬虫俱乐部网络爬虫技术和正则表达式的课程负责人。



此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。

投稿邮箱:statatraining@163.com投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里
为作者署名,并有赏金分成。

2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可

以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。





您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存