首页 > 编程知识 正文

pandas中文手册,pandas教程

时间:2023-05-06 17:11:06 阅读:160183 作者:517

Pandas系列教程(1) )。

对于想进入数据科学的朋友们来说,Python是个好选择。 除了为了简单的语法,Python生态还提供了很多在数值计算方面非常优秀的库。 其中Pandas当然,Pandas是非常强大的数据集处理工具,在很多情况下与numpy、matplotlib等库组合使用。 我也是刚开始学习Pandas的时候,顺便翻译了官方的Pandas教程。 这里使用的是jupyter notebook。 博客不支持html直接编辑,因此只能转换为标记格式。 如果您想直接查看html版本,请单击各部分下面的链接。 本文仅用于学习和交流,欢迎大家交流指正!

摘要数据帧(DataFrame )和结构生成数据,使用to_csv )函数创建数据集并获取数据,使用read_csv )函数读取数据集准备数据(make data clean ) 此外,还提供了函数可视化,例如df.head (),主要检查类型分析数据并对DF.sort_Van进行排序。 单击此处使用matplotlib直观地显示我们数据的HTML版本

#导入所需的库文件from pandas import DataFrame,然后单击, read _ csvimportmatplotlib.pyplotaspltimportpandasaspdimportsysimportmatplotlib % matplotlibinlineprint (python version ' prsint ) ) print ) matplotlibversion ' matplotlib._ _ version _ ) python version apr 292018,16336014:56 ([ gcc7.2.0] pap 在此,用婴儿的名字和相应的出生次数names=[ 'John ',' Mel ' ] births=[ 968,155,77,578,973 ] # zip list命令生成我们的数据集元组列表的格式为babydataset=list(zip(names,Births ) 155 )、)、jddhlb (,77 )、John )、578 )、)、Mel )、973 ) ) #德# df是数据帧),DataFrame columns参数是关键字df=PD.data frame (data=baby dataset,columns=['Names ', 使用“Births'](dfNamesBirths0所害怕的山水9681 hldy 1552 JD HLB 773 John 5784 Mel 973“然后是DataFrame对象的to_csv”)函数创建. csv文件其中,index参数设置为False,表示生成的header=False表示不生成Names Births的两个关键字' ' df.to_csv ' '。 ' Births1880.CSV ',index=False,header=False ' '得到的CSV文件的内容如下: 578Mel,973 ' ' ' ' ' '从CSV文件读取数据如果需要在windows平台上以绝对路径读取,请单击, location=r ' c : (请参见_ SERS _ drrs )中的r表示用于修正反斜杠的' ' location=' births 1880.CSV ' df=71要让可能的山水968到列名位置解决此问题,必须使用read_csv ()函数的header参数将header设置为None。 这意味着要导入的csv文件中没有header ) (列关键字) ),以避免将可能的山水误认为header。 ' ' ' df=PD.read_CSV(location,header=None ) ) df 010害怕的山水9681 hldy 1552 jdd HLB 773 John 5784 Mel 973 ' '此时,header为0和0 默认情况下,header将使用“' ' df=PD.read_CSV(location,names=['Names ',' Births'] ) df nade,就像我们创建数据帧时一样

sv文件import osos.remove(Location) # 准备数据,检查数据帧的类型以及数据帧内各个关键字的类型# 将输出所有列的类型df.dtypes Names objectBirths int64dtype: object # 检查Births的类型是否正确,需要为整数df.Births.dtype dtype('int64') """当我们完成了上述步骤并确认数据类型无误后我们就可以开始分析数据了- 对数据帧df进行排序并选出最上面一行- 用max() 属性来找到出生次数的最大值"""# 方法一# Births参数表示以Births为参考列进行排序,ascending设置为False表示降序,否则升序Sorted = df.sort_values(['Births'],ascending=False)# 用df.head() 得到前面若干行,这里选第一行Sorted.head(1) NamesBirths4Mel973 # 方法二# 直接对df['Births']调用max()方法df['Births'].max() 973 # 数据的可视化,用的是matplotlib的plt# 把Births 列进行绘图我们可以很直观地得到最流行的名字# 生成图,实际上是生成了一个plt中的figuredf['Births'].plot()# 获取数据集中的最大值,结果是973MaxValue = df['Births'].max()# 得到具有最高出生次数的名字,这里的结果只有一个Mel,在最大值不唯一的情况下返回列表MaxName = df['Names'][df['Births'] == MaxValue].values# 传入标注的文字Text = str(MaxValue) + ' - ' + MaxName# 加入注释plt.annotate(Text,xy=(1,MaxValue),xytext=(8,0), xycoords=('axes fraction','data'),textcoords='offset points')print("The most popular name")df[df['Births'] == df['Births'].max()] The most popular name NamesBirths4Mel973

# 官方文档第一节的内容到此结束了,那么此外我们还可以多做一些小试验# 每一列都是列表的形式,通过index可以访问df['Births'][1] 155 df1 = df.copy()# 这里修改对应位置的值为出现警告,意思大致是担心我们原来的数据丢失,所以保险的方法是# 先copy 一下df1['Births'][1] = 973 /home/dreamboy/anaconda3/lib/python3.6/site-packages/ipykernel_launcher.py:3: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrameSee the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy This is separate from the ipykernel package so we can avoid doing imports until df NamesBirths0害怕的山水9681hldy1552jddhlb773John5784Mel973 df1 NamesBirths0害怕的山水9681hldy9732jddhlb773John5784Mel973 #可以看到在最高出生次数名字不唯一的时候返回的是一个列表array = df1['Names'][df1['Births'] == df1['Births'].max()].valuesarray array(['hldy', 'Mel'], dtype=object) array[0] 'hldy' #导入需要的库文件from pandas import DataFrame, read_csvimport matplotlib.pyplot as pltimport pandas as pdimport sysimport matplotlib%matplotlib inlineprint('Python version' + sys.version)print('Pandas version' + pd.__version__)print('Matplotlib version' + matplotlib.__version__) Python version3.6.5 |Anaconda, Inc.| (default, Apr 29 2018, 16:14:56) [GCC 7.2.0]Pandas version0.23.0Matplotlib version2.2.2 # 创建初始数据集,这里我们统计婴儿名字与相应的出生次数names = ['害怕的山水','hldy','jddhlb','John','Mel']births = [968,155,77,578,973]# 用zip+list命令生成我们的数据集,元组列表的形式BabyDataSet = list(zip(names,births))BabyDataSet [('害怕的山水', 968), ('hldy', 155), ('jddhlb', 77), ('John', 578), ('Mel', 973)] # 完成数据集的创建后,我们用pandas库把生成的数据集保存到csv格式的文件中# df 是一个数据帧(DataFrame)的形式,类似于数据库中的表# 将数据集传入data参数,columns参数传入的是我们的关键字(类似于key)df = pd.DataFrame(data=BabyDataSet,columns=['Names','Births'])df NamesBirths0害怕的山水9681hldy1552jddhlb773John5784Mel973 """然后用 DataFrame 对象的to_csv()函数生成.csv文件其中index 参数设置为False表示生成的csv文件中将不带行标(index)header=False 表示不生成 Names Births 两个关键字"""df.to_csv('births1880.csv',index=False,header=False)"""我们得到的csv文件内容如下:害怕的山水, 968hldy, 155jddhlb, 77John, 578Mel, 973""" """从csv文件中读取数据,调用 read_csv() 库函数先定义路径我的csv就生成在当前目录下,如果需要在windows平台下用绝对路径读取可以参考Location = r'C:Usersdreamboybirths1880.csv'其中的r 是用来修正 反斜杠的"""Location = 'births1880.csv'df = pd.read_csv(Location)df 害怕的山水9680hldy1551jddhlb772John5783Mel973 """可以看到我们的结果好像出了点问题! 害怕的山水 968跑到了列名的位置上解决这个问题我们需要用read_csv()函数中的header参数将header设置为None 表示告诉函数我们要读取的csv文件中是没有header(列关键字)的,它就不会把害怕的山水误认为是header了!"""df = pd.read_csv(Location,header=None)df 010害怕的山水9681hldy1552jddhlb773John5784Mel973 """此时header 变为了0和1,这是默认值,为了达到我们想要的效果,需要显式地指定names参数,就和我们创建数据帧时一样"""df = pd.read_csv(Location,names=['Names','Births'])df NamesBirths0害怕的山水9681hldy1552jddhlb773John5784Mel973 # 删除csv文件import osos.remove(Location) # 准备数据,检查数据帧的类型以及数据帧内各个关键字的类型# 将输出所有列的类型df.dtypes Names objectBirths int64dtype: object # 检查Births的类型是否正确,需要为整数df.Births.dtype dtype('int64') """当我们完成了上述步骤并确认数据类型无误后我们就可以开始分析数据了- 对数据帧df进行排序并选出最上面一行- 用max() 属性来找到出生次数的最大值"""# 方法一# Births参数表示以Births为参考列进行排序,ascending设置为False表示降序,否则升序Sorted = df.sort_values(['Births'],ascending=False)# 用df.head() 得到前面若干行,这里选第一行Sorted.head(1) NamesBirths4Mel973 # 方法二# 直接对df['Births']调用max()方法df['Births'].max() 973 # 数据的可视化,用的是matplotlib的plt# 把Births 列进行绘图我们可以很直观地得到最流行的名字# 生成图,实际上是生成了一个plt中的figuredf['Births'].plot()# 获取数据集中的最大值,结果是973MaxValue = df['Births'].max()# 得到具有最高出生次数的名字,这里的结果只有一个Mel,在最大值不唯一的情况下返回列表MaxName = df['Names'][df['Births'] == MaxValue].values# 传入标注的文字Text = str(MaxValue) + ' - ' + MaxName# 加入注释plt.annotate(Text,xy=(1,MaxValue),xytext=(8,0), xycoords=('axes fraction','data'),textcoords='offset points')print("The most popular name")df[df['Births'] == df['Births'].max()] The most popular name NamesBirths4Mel973

# 官方文档第一节的内容到此结束了,那么此外我们还可以多做一些小试验# 每一列都是列表的形式,通过index可以访问df['Births'][1] 155 df1 = df.copy()# 这里修改对应位置的值为出现警告,意思大致是担心我们原来的数据丢失,所以保险的方法是# 先copy 一下df1['Births'][1] = 973 /home/dreamboy/anaconda3/lib/python3.6/site-packages/ipykernel_launcher.py:3: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrameSee the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy This is separate from the ipykernel package so we can avoid doing imports until df NamesBirths0害怕的山水9681hldy1552jddhlb773John5784Mel973 df1 NamesBirths0害怕的山水9681hldy9732jddhlb773John5784Mel973 #可以看到在最高出生次数名字不唯一的时候返回的是一个列表array = df1['Names'][df1['Births'] == df1['Births'].max()].valuesarray array(['hldy', 'Mel'], dtype=object) array[0] 'hldy'

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。