Tensorflow-机器学习基础三部曲之pandas(6)

机器学习基础三部曲之pandas

Pandas 简介

Pandas 是用于进行数据分析和建模的重要库,广泛应用于 TensorFlow 编码。该教程提供了学习本课程所需的全部 Pandas 信息

学习目标

  1. 大致了解 pandas 库的 DataFrame 和 Series 数据结构
  2. 存取和处理 DataFrame 和 Series 中的数据
  3. 将 CSV 数据导入 pandas 库的 DataFrame
  4. 对 DataFrame 重建索引来随机打乱数据

基本概念

pandas 中的主要数据结构被实现为以下两类:

  • DataFrame,您可以将它想象成一个关系型数据表格,其中包含多个行和已命名的列。
  • Series,它是单一列。DataFrame 中包含一个或多个 Series,每个 Series 均有一个名称。
    数据框架是用于数据操控的一种常用抽象实现形式。Spark 和 R 中也有类似的实现。

pandas使用笔记

例1:

import pandas as pd

#导入pandas模块

california_housing_dataframe = pd.read_csv("https://download.mlcc.google.cn/mledu-datasets/california_housing_train.csv", sep=",")

#read_csv读取csv文件

california_housing_dataframe.describe()

#describe是一个快速统计的函数

california_housing_dataframe.head()

#head读取数据集的前5行

california_housing_dataframe.hist('housing_median_age')

#hist可以根据一列绘制图表
例2:

city_names = pd.Series(['San Francisco', 'San Jose', 'Sacramento'])
population = pd.Series([852469, 1015785, 485199])

#创建两个series

扫描二维码关注公众号,回复: 4035401 查看本文章
cities = pd.DataFrame({ 'City name': city_names, 'Population': population })

#创建一个DataFrame,一列是City name;一列是Population

print(type(cities['City name']))
cities['City name']

#打印City name这一列

print(type(cities[0:2]))
cities[0:2]

#切片,表示从0开始,包括0、1但是不包括2
例3:
可以向 Series 应用 Python 的基本运算指令

import numpy as np

#导入numpy模块

population / 1000.
#population列除1000
np.log(population)

#计算population列的log值

population.apply(lambda val: val > 1000000)

#对于更复杂的单列转换,您可以使用 Series.apply。像 Python 映射函数一样,Series.apply 将以参数形式接受 lambda 函数,而该函数会应用于每个值。
上面的示例创建了一个指明 population 是否超过 100 万的新 Series
DataFrame的修改

cities['Area square miles'] = pd.Series([46.87, 176.53, 97.92])
cities['Population density'] = cities['Population'] / cities['Area square miles']
cities

#上面两个例子是增加两个Series

cities ['saint'] = (cities['Area square miles'] > 50) & cities['City name'].apply(lambda name: name.startswith('San'))
cities

#增加一个saint的series,条件是大于50且包含san

city_names.index

#显示索引

cities.iloc[1:2]

#切片

cities.reindex([2, 0, 1])

#pandas的reindex对象,是数据符合新的索引来构造一个新的对象
#Series的reindex使它符合新的索引,如果索引的值不存在就填入缺失值

cities.reindex(np.random.permutation(cities.index))

#设置一个随机的

cities.reindex([0,2,3,4],fill_value = 0)

#把NaN的值赋0

map与lambda
map就是将自定义函数应用于Series每个元素
apply和applymap
apply和applymap是对dataframe的操作,前者操作一行或者一列,后者操作每个元素
contains包含关系
#使用DataFrame模糊筛选数据(类似SQL中的LIKE)
#使用正则表达式进行模糊匹配,*匹配0或无限次,?匹配0或1次

df_obj[df_obj['套餐'].str.contains(r'.\*?语音CDMA.\*')] 

#下面两句效果一致

df[df['商品名称'].str.contains("四件套")]
df[df['商品名称'].str.contains(r".\*四件套.\*")]

猜你喜欢

转载自blog.csdn.net/qq_40188689/article/details/83515283