以下内容是Google机器学习课程关于pandas的学习笔记,学习地址是https://colab.research.google.com/notebooks/mlcc/intro_to_pandas.ipynb?hl=zh-cn#scrollTo=QvJBqX8_Bctk
DataFrame 和 Series
Pandas 中的主要数据结构被实现为以下两类:
1. DataFrame,可以将它想象成一个关系型数据表格,其中包含多个行和已命名的列。
2. Series,它是单一列。DataFrame 中包含一个或多个 Series,每个 Series 均有一个名称。
学习Demo
import pandas as pd
import numpy as np
if __name__ == "__main__":
"""
构建Series
"""
print('------------------构建Series------------------------')
print(pd.Series(["San Francisco", "San Jose", "Sacramento"]))
"""
构建DataFrame
如果 Series 在长度上不一致,系统会用特殊的 NA/NaN 值填充缺失的值。
"""
print('------------------构建DataFrame---------------------')
city_names = pd.Series(["San Francisco", "San Jose", "Sacramento"])
population = pd.Series([852469, 1015785, 485199])
print(pd.DataFrame({'City name': city_names, 'Population':population}))
"""
DataFrame.describe可以对DataFrame中的数据进行一些简单的统计
"""
print('----------------使用DataFrame.describe进行统计--------------')
california_housing_dataframe = pd.read_csv(
"https://storage.googleapis.com/mledu-datasets/california_housing_train.csv", sep=",")
print(california_housing_dataframe.describe())
"""
显示 DataFrame 的前几个记录
"""
print('-----------------显示 DataFrame 的前几个记录--------------')
print(california_housing_dataframe.head())
"""
操控数据
"""
print('------------------------改变一列的值------------------------')
cities = pd.DataFrame({'City name': city_names, 'Population': population})
cities["Population"] /= 1000
print(cities)
print('-------------------------新增列-----------------------')
cities['Area square miles'] = pd.Series([46.87, 176.53, 97.92])
cities['Population density'] = cities['Population'] / cities['Area square miles']
print(cities)
"""
练习:使用lambda操作Series
为DataFrame添加一个Series:城市名以San开头,面积大于50平方英里(布尔类型)
"""
print('-----------------------使用lambda-----------------------')
cities['Is wide and has saint name'] = (cities['Area square miles'] > 50) & (cities['City name'].apply(lambda name : name.startswith('San')))
print(cities)
"""
索引:Series 和 DataFrame 对象定义了 index 属性
默认情况下,在构造时,pandas 会赋可反映源数据顺序的索引值。索引值在创建后是稳定的;也就是说,它们不会因为数据重新排序而发生改变。
"""
print('--------------------------索引------------------------------')
print(cities.index)
"""
重建索引是一种随机排列 DataFrame 的绝佳方式。在下面的示例中,会取用类似数组的索引,然后将其传递至 NumPy 的
random.permutation 函数,该函数会随机排列其值的位置。如果使用此重新随机排列的数组调用 reindex,
会导致 DataFrame 行以同样的方式随机排列。
"""
print('------------------------随机打乱索引-------------------------')
print(cities.reindex(np.random.permutation(cities.index)))