pandas简易学习教程/练习(2)
来源:互联网 发布:js获取时间毫秒数 编辑:程序博客网 时间:2024/04/29 12:34
pandas是Python处理数据的一个数据分析处理库,这里的代码我都是在anaconda的Jupyter Notebook上运行的,这是个交互式平台可以立马看到结果(很方便),当然也可以在pycharm上运行,如果没有安装运行的环境的可以参考以下博文
http://blog.csdn.net/a_hui_tai_lang/article/details/78689559
废话少说,一切尽在代码之中
代码已经上传到我的GitHub,https://github.com/LoyalWilliams/machinelearning
# coding: utf-8# In[1]:import numpy as npimport pandas as pdtitanic_survival=pd.read_csv("titanic_train.csv")titanic_survival.head()
# In[2]:#查看一些基本的信息,比如Age这一列age=titanic_survival["Age"]# print(age.loc[0:10])age_is_null=pd.isnull(age)# print(age_is_null)age_null_true=age[age_is_null]# print(age_null_true)age_null_count=len(age_null_true)print(age_null_count)
# In[3]:#如果数据中含有空值,则无法求出平均值等统计指标,结果为nanmean_age=sum(titanic_survival["Age"])/len(titanic_survival["Age"])print(mean_age)
# In[4]:#要求出正确的统计指标,必须先把缺少值筛选掉good_ages=titanic_survival["Age"][age_is_null==False]correct_mean_age=sum(good_ages)/len(good_ages)print(correct_mean_age)
# In[5]:#padas提供了筛掉空值求均值的方法correct_mean_age=titanic_survival["Age"].mean()print(correct_mean_age)
# In[6]:#求每个船舱等级的价格平均值passenger_classes=[1,2,3]fares_by_class={}for this_class in passenger_classes: pclass_rows=titanic_survival[titanic_survival["Pclass"]==this_class] pclass_fares=pclass_rows["Fare"] fare_for_class=pclass_fares.mean() fares_by_class[this_class]=fare_for_classprint(fares_by_class)
# In[7]:#利用pivot_table分组聚合fares_by_class=titanic_survival.pivot_table(index="Pclass",values="Fare",aggfunc=np.mean)print(fares_by_class)
# In[8]:#aggfunc默认求均值passenger_age=titanic_survival.pivot_table(index="Pclass",values="Age")print(passenger_age)
# In[9]:port_stats=titanic_survival.pivot_table(index="Embarked",values=["Fare","Survived"],aggfunc=np.sum)print(port_stats)
# In[10]:# axis=1表示对行操作,默认axis=0对列操作;以下是把空值行去掉#specifying axis=1 or(否则) axis='columns' will drop any columns that have null valuesdrop_na_columns=titanic_survival.dropna(axis=1)new_titanic_survival=titanic_survival.dropna(axis=0,subset=["Age","Sex"])print(new_titanic_survival)
# In[11]:#通过索引找值,以下数字83是索引值,"Age"是列,也就是通过行列坐标进行取值row_index_83_age=titanic_survival.loc[83,"Age"]row_index_1000_pclass=titanic_survival.loc[766,"Pclass"]print(row_index_83_age)print(row_index_1000_pclass)
# In[12]:#排序,重新设置索引new_titanic_survival=titanic_survival.sort_values("Age",ascending=False)print(new_titanic_survival[0:10])titanic_reindexed=new_titanic_survival.reset_index(drop=True)print("---------------")print(titanic_reindexed.loc[0:10])
# In[13]:#自定义函数def hundredth_row(column): #取出第100行的数据 hundredth_item=column.loc[99] return hundredth_itemhundredth_row_data=titanic_survival.apply(hundredth_row)print(hundredth_row_data)
# In[14]:#求每个列的缺失指标格式def not_null_count(column): column_null=pd.isnull(column) null=column[column_null] return len(null)column_null_count=titanic_survival.apply(not_null_count)print(column_null_count)
# In[16]:#通过axis=1这个参数,我们可以使用DataFrame.apply()方法来迭代每行的数据,进行转换def which_class(row): pclass=row['Pclass'] if pd.isnull(pclass): return "Unknown" elif pclass == 1: return "First Class" elif pclass == 2: return "Second Class" elif pclass == 3: return "Third Class"classes=titanic_survival.apply(which_class,axis=1)print(classes)
# In[18]:def is_minor(row): if row["Age"]<18: return True else: return Falseminors=titanic_survival.apply(is_minor,axis=1)# print(minors)dsffddef generate_age_label(row): age=row["Age"] if pd.isnull(age): return "unknown" elif age<18: return "minor" else: return "adult"age_labels=titanic_survival.apply(generate_age_label,axis=1)print(age_labels)
# In[19]:#获救的平均值titanic_survival['age_labels']=age_labelsage_group_survival=titanic_survival.pivot_table(index="age_labels",values="Survived")print(age_group_survival)
阅读全文
0 0
- pandas简易学习教程/练习(2)
- pandas简易学习教程/练习(1)
- Shell简易学习练习
- Pandas 使用教程 2
- pandas练习
- pandas练习
- pandas&pandas学习教程&DataFrame与Series数据结构
- pandas学习笔记(1)--pandas简介
- Pandas学习笔记一(Pandas数据结构)
- pandas学习笔记-DataFrame(2)
- pandas学习(一)
- pandas学习(一)
- pandas 学习(一)
- python 简易学习教程 1
- Perl简易教程(2) ---数据类型
- Git简易教程笔记(2)
- Vim 简易教程(2)
- CANoe简易教程2
- 定义一个圆类(Circle)
- 漫画:什么是红黑树?
- Pycharm Pythong 导包
- Vue学习
- Java的Socket编程C/S小例子
- pandas简易学习教程/练习(2)
- 尾调用优化
- 电磁兼容一例
- Qt学习: 坐标系统详解
- 小结
- 我为什么要写blog
- 小码侬修仙之路
- java基础:代码块、继承
- JVM四种垃圾回收机制