# Numpy就是一个多维的数组,只是它在我们原来的list上做了一些封装,提供了非常便利的科学运算功能
# Pandas 主要侧重的数据处理
import numpy as np
import pandas as pd
a = np.array([1,2,3,4])
a
b = np.array([[
[1,2],[3,5],
[5,6],[1,3]
]
,[
[1,5],[1,6],
[2,3],[2,7]]
])
b
np.array([[
[1,2],[3,4],
[3,4],[5,4],
[5,6],[7,3],
[5,6],[7,6]
],
[
[1,2],[3,4],
[3,4],[5,4],
[5,6],[7,3],
[5,6],[7,6]
]
])
b1 = np.array([[
[1,2],[3,4],
[3,4],[5,4],
[5,6],[7,3],
[5,6],[7,6]],
[[1,2],[3,4],
[3,4],[5,4],
[5,6],[7,3],
[5,6],[7,6]]])
print( b1.ndim ) # 查看数据维度的
print( b1.dtype)
# numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
# 在指定的间隔内返回均匀间隔的数字。
# 返回num均匀分布的样本,在[start, stop],num=n 就会返回n个数字
np.linspace(1,10 ,10)
np.random.randn(3,5)
Pandas简介
是一个专注于数据处理的一个库 这个库可以帮助数据分析、数据挖掘、算法等工程师岗位的人员轻松的解决数据预处理的问题
# Pandas的第一个数据类型Series
seriesObj = pd.Series([1,3,5,7])
seriesObj
dictSeries = pd.Series({"Python":"unittest" ,"运维":"Python" , "自动化测试":"Python"})
# Series可以接收list类型数据,也可以接收字典类型数据
dictSeries
dictSeries["Python"]
indexSeries = pd.Series([1,'Python','2019-10-26'] , index=["序号" , "语言" , '日期'])
indexSeries
# pandas结合着numpy来进行数学运算
num = pd.Series([2,4,8,16])
res = np.log2(num)
print(res)
type(res)
# DataFrame是Python中Pandas库中的一种数据结构,它类似excel,是一种二维表。
# 或许说它可能有点像matlab的矩阵,但是matlab的矩阵只能放数值型值(当然matlab也可以用cell存放多类型数据),
# DataFrame的单元格可以存放数值、字符串等,这和excel表很像。
# 同时DataFrame可以设置列名columns与行名index,可以通过像matlab一样通过位置获取数据也可以通过列名和行名定位
import pandas as pd
import numpy as np
dataFrame1 = pd.DataFrame([[1 , "接口自动化测试" , "2019-11-10"] , [2 , "UITest" , "2020-01-10"] , [3 , "性能自动化测试" , "2020-03-10"]])
dataFrame1
# 使用字典进行构造
data = {
"人物":["张三丰","张无忌","张翠山"],
"风景":["武当山","松花江","冰火岛"]
}
dataFrame2 = pd.DataFrame(data)
dataFrame2
# 读取csv文件
pd.read_csv("data1.csv" , header = None)
pd.read_csv("data1.csv" , index_col = "d")
file = pd.read_excel("data.xlsx" , sheet_name = "工作表1")
print(file)
print(type(file))
file = pd.read_excel("data.xlsx" , sheet_name = "工作表1")
print(file)
print(type(file))
csv_data = pd.read_csv("executive.csv" )
csv_data
csv_data.shape
csv_data.dtypes
csv_data.age[0]
csv_data.describe()
# date_range() 参数 start 开始时间, periods 间隔时间,freq 按照什么间隔
dates = pd.date_range("20191027" , periods=6 , freq='d')
dates
import numpy as np
dataFrame3 = pd.DataFrame(np.random.rand(6,5) , index = dates , columns = list("ABCDE"))
dataFrame3
dataFrame3.T
dataFrame3["2019-10-27":"2019-10-29"]
dataFrame3.loc["2019-10-27":"2019-10-29" , ["A" ,"B"]]
# loc意义:通过行标签索引行数据
# 例: loc[n]表示索引的是第n行(index 是整数)
# loc[‘d’]表示索引的是第’d’行(index 是字符)
dataFrame3.at[dates[0] , "B"]
# at作用:获取某个位置的值,例如,获取第0行,第a列的值,即:index=0,columns='a'
dataFrame3.head(3)
dataFrame3.tail(2)
# pandas 重新索引
indexObj = pd.Series([4.5,9.4,-2.3] , index = ["A","B","C"])
indexObj
newIndex = indexObj.reindex(['A' , 'B' , 'C' , 'D' , 'E'])
newIndex
# 原来的表格只有三行,所以多出来的行会显示NaN,
# 可以使用fill_value=0来显示没有值的单元格
newIndex = indexObj.reindex(['A' , 'B' , 'C' , 'D' , 'E'] , fill_value=0)
newIndex
travelData= pd.read_csv("qunar_freetrip.csv", index_col=0)
travelData.head()
travelData.shape
travelData.info()
travelData.describe()
travelData.columns
col = travelData.columns.values
print(col)
print(col[8])
col[2].strip()
# 可以看出上面的列值取出后会包含空格,所以使用strip()方法去除首尾空格
travelData.columns = [x.strip() for x in col ]
travelData.columns.values
# 重复项判断
travelData.duplicated()
travelData.duplicated().sum() # 计算重复项数量
100
# 重复数据清理- 就地修改
travelData.drop_duplicates( inplace = True)
travelData.duplicated().sum() # 计算重复项数量,清理后显示为0
0
travelData.shape
(5000, 13)
travelData.shape[0]
5000
travelData.shape[1]
13
travelData.index
Int64Index([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
...
5089, 5090, 5091, 5092, 5093, 5094, 5096, 5097, 5098, 5099],
dtype='int64', length=5000)
travelData.index = range(travelData.shape[0])
travelData.index
RangeIndex(start=0, stop=5000, step=1)
travelData.describe().T # 转置效果,行列转置
travelData["价格"].std() # std 标准差函数
2604.3297800791433
sta = (travelData["价格"]-travelData["价格"].mean())/travelData["价格"].std()
# 这边的计算完全看不懂在说什么
# a.mean() 默认对每一列的数据求平均值;若加上参数a.mean(1)则对每一行求平均值;
# DataFrame.abs() 返回一个包含每个元素绝对值的Series/DataFrame。
# 此函数只适用于所有数值元素。
travelData[sta.abs()>3]
ravelData[travelData.节省> travelData.价格]
(未完待续)