【数据分析】一文教你玩转DataFrame
本文作者:李嘉琪,中南财经政法大学金融学院
本文编辑:郭培军
技术总编:孙一博
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 np
import pandas as pd
dates = pd.date_range('20220906', periods=8)
df = pd.DataFrame(np.random.randn(8, 5), index=dates,columns=list('abcde'))
df
输出结果如下:
#使用列表创建
import pandas as pd
data = [['Math',90],['English',92],['Chinese',73]]
df = pd.DataFrame(data,columns=['course','score'],dtype=float)
df
#使用字典创建
import pandas as pd
data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}]
df = pd.DataFrame(data)
df
输出结果:
#我们也可以指定索引值,举例假设现在班里以下几位同学的成绩被公示了出来
import pandas as pd
data = {
"李明": [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.columns
df.index
df.values
#查看行列数。使用shape查看行列数,参数为0表示查看行数,参数为1表示查看列数。
print(df.shape[0])
print(df.shape[1])
输出结果如下:
三、数据的描述性统计
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()返回每一列最小值对应的索引。
输出结果如下:
四、数据处理
s1=df.iloc[2]
s1
df.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]
list1
df13 = pd.concat(list1)
df13
输出结果如下:
DataFrame常用方法就介绍到这里了,综上所述,DataFrame可以帮助我们快速处理数据!熟能生巧,大家快来练习一下,祝大家早日玩转DataFrame!
最后,我们为大家揭秘雪球网(https://xueqiu.com/)最新所展示的沪深证券和港股关注人数增长Top10。
对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!
往期推文推荐
【数据分析-入门】一看就会!Numpy的创建、索引、切片与更新
带你玩转Stata编码一言不合就teamviewer 教你用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)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可