inx函数python_Python数据分析入门

如今数据分析越来越重要,比起使用excel等工具,使用编程语言更加高效。这篇文章主要介绍一些简单的数据分析入门知识,使用的语言是python

读取csv文件

数据分析的第一步是要利用程序读取csv文件:

例子1:

import csv

with open(‘a.csv’) as csvfile:

mpg = list(csv.DictReader(csvfile))

mpg[:3]

例子2:

ds_file = “/home”

with open(ds_file, ‘w’) as csvfile:

fout = csv.writer(csvfile, delimiter=’|’)

for airport in airports:

fout.writerow(airport)

Pandas

Panda库是处理dataframe的强有力工具, 我们可以处理两种类型的数据:

Series: one-dimensional, 一维数据

values = pd.Series(data, index=idx)

series = pd.Series(range(5), index=[‘a’,’b’,’c’,’d’,’e’])

DataFrame: two-dimensional,二维数据

dt = {

‘A’: [0,2,3,45],

‘B’: [1,2,3,4]

df = pd.DataFrame(dt, index=list(‘qwert’))

df.head() #查看头部几行数据

df.tail(2) # 查看尾部2行数据

df.describe() #查看统计数据

df.columns # 查看所有列名

对于数据中有一些空数据,可以使用以下这些方法进行处理:

df.dropna()

df.dropna(axis=1)

df.fillna(0)

df.fillna(df.mean())

另外,更加高级的一些数据处理操作:

loc: 通过标签选取数据

iloc: 通过行/列号选取数据

Numpy

NumPy(Numerical Python) 是Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。它也是数据分析中常用的一个库。

基础操作

最基础的操作就是数据的加减乘除,都可以给予数组的形式进行:

a = np.array([1,2,3,4])

b = np.array([2,3,4,5])

a + b

a / b

a-b

a > b

a*b

A.dot(B)

np.dot(A, B)

a *= 3

另外,可以使用统计方法获取数组的统计信息:

ages.sum()

ages.min()

ages.max()

ages.sum(axis=0)

切片和高级索引

数据的切片和其他Python数据结构类似:

a[2] # 获取第二个

a[-2] # 获取倒数第二个

a[2:7] # 从索引 2 开始到索引 7 停止

a[:11:2] # 从最开头到索引11停止,间隔为2

a[::-1] # 获得反转的数据结构

numpy中提供了多种分割数组的方式:

np.split(x, 3) # 通用函数,将一个数组分割成多个子数组

np.split(x, [4,7])

np.hsplit(y, 2) # 按列分割

np.vsplit(y, 2) # 按行分割

数学函数

numpy库还提供了很多数学函数操作:

angels = np.array([0, 30, 45])

np.radians(angles) # 角度计算

np.cos(angels_radians) # cos

np.degrees(inv)

np.mean()

np.median()

np.genfromtxt(‘data/s.csv’, delimiter=’,’)

np.std()

np.var()

数组变形

另外,可以借助以下这些方法实现数组的翻转,变换等操作:

a.ravel() # 展开数组

a.T # 置换数组

a.T.ravel()

a.shape # 返回数组的形状

a.reshape(4,2) # 修改维度

遍历元素

在python程序中有很多种方式可以遍历numpy 生成的数据:

for i in a:

print(i)

for element in students.flatten():

print(element)

for element in students.flatten(order=’F’):

print(element)

numpy.nditer方法提供了一种更加灵活的方式访问一个或者多个数组元素。

for i in np.nditer(x):

print(i)

我们可以使用参数order来决定遍历的顺序,order=’F’表示Fortran order,即是列序优先.反之,order=’C’表示行序优先:

for i in np.nditer(x, order = ‘F’, flags = [‘external_loop’]):

print(i)

数组的浅拷贝

一般的引用拷贝都是浅拷贝,这也意味着引用数据被修改,原有数据源也会被修改

frunits.view()

深拷贝

fruits = np.array(3)

basket = fruits.copy()

高级数组索引

借助原生操作,我们还能实现更加高级地过滤处理数组:

import numpy as np

a = np.arange(12)**2

indx_1 = [2,6,8]

a[inx_1]

indx+2 = np.array([[2,4],[8,10]])

a[indx_2]

food[row, col]

返回所有非0的数组:

np.count_nonzero(gdp_16[gdp_16 > 1000])

Scipy

SciPy以NumPy为基础,与NumPy一样,SciPy有着稳定,成熟,且应用广泛的数值运算库。要学习相关技术,可以参考其 SciPy官方教程

图片操作

借助scipy,可以基于像素层面处理一些图片数据:

rgb values r,g,b: 值从0-255

灰度值grayscale范围从0到-1

from scipy import ndimage

from scipy import misc

import matplotlib.pyplot as plt

f = misc.face()

f.shape

plt.imshow(f)

plt.show()

其中misc模块中,提供一些基本的图像相关的读写函数,可以轻松读写图像数据。misc模块自带一些灰度图像ascent和彩色的face图,可以供我们学习使用。

可视化

数据的可视化,通常我们会借助matplotlib这个库,如果你使用Jupyter的话,可以使用如下语句开启自动画图功能:

%matplotlib inline

下面是一些简单的例子:

import matplotlib.pyplot as plt

  1. 画图

fig = plt.figure()

2.添加axis

ax = fig.add_subplot()

或者使用快速步骤

fig, ax = plt.subplots()

plt.show()

或者画一个子图:

import numpy as np

fig, ax = plt.subplots(figsize=(10,5))

m = -2

b = 5

x = np.linspace(0, 10)

y = m * x + b

把数据带上

ax.plot(x, y)

plt.show()

我们还可以在图片上添加文本信息:

ax.set_xlabel(“X Axis”)

ax.set_ylabel(“Y Axis”)

ax.set_title(“Test Title”)

控制显示范围:

ax.set_xlim(-10, 10)

ax.set_ylim(-10, 10)

控制数轴上显示的数字逻辑:

ax.set_xticks(np.arange(0, 15, 5))

ax.set_yticks(np.arange(-15, 10, 5))

如果需要画多条线的话,可以参考如下例子:

x1 = np.linspace(0, 10)

y1 = m * x1 + b

x2 = x1

y2 = -1 * y1

ax.plot(x1, y1)

ax.plot(x2, y2)

*参考资料*

Original: https://blog.csdn.net/weixin_42176612/article/details/114507860
Author: xian zhang
Title: inx函数python_Python数据分析入门

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/741542/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球