Python用于数据科学 - 第2部分

Tavish Aggarwal.
I

N. 以前的帖子,我已经涵盖了在进入数据科学家的道路之前所需的必要性。在这篇文章中,我将继续使用我们应该熟悉的主题,成为一个很好的数据科学家。以下是此帖子中涵盖的主题列表:

 

  1. 在Python中创建函数
  2. 了解构建功能
  3. 关键词论点
  4. 接受输入
  5. 嵌套功能
  6. python中的文件
  7. lambda的功能
  8. 面向对象的Python编程
    • 创建类
    • 构造师
    • 全局变量
    • 遗产
    • 超级关键词
  9. Python的模块
  10. 机器学习中Python库介绍
  11. PIP - Python中使用的包管理器

让我们开始吧。

职能

函数是我们需要重复执行的可重复使用的代码。 Python具有以下功能的构建,如:

  1. print - 打印结果。例如:打印('Hello World');
  2. len - 找出变量的长度。

例如:

var1 = [1, 2, 3, 4];
print(len(var1))

我们通常用于解决数据相关问题的其他一些有用的内置功能是:

  • Sorted - 它用于按顺序对对象进行排序。它需要两个参数,如下所示:
arr = [11, 23, 45, 9, 45.8, 9, 13]
print(sorted(arr, reverse = False))

# Output
[9, 9, 11, 13, 23, 45, 45.8]


print(sorted(arr, reverse = True))

# Output
[45.8, 45, 23, 13, 11, 9, 9]
  • upper and count string functions: These are the function that we can perform on the string. To know the complete list of string function you can type help(str)
string = "learning python"

print('String to upper case: ' +string.upper())

print(string.count('n'))

#output:
String to upper case: LEARNING PYTHON
3

除此之外,我们可以创建自己的功能,如我们几乎可以在所有的编程语言中。

To declare a function we use a def keyword. An example is shown below:

def sum_number(x,y):
    z = x + y
    return z

我们可以称之为:

result = sum_number(4,6)
print(result)

我们甚至可以传递变量的默认值。请参阅下面显示的代码:

def sum_number(x,y=0):
    z = x + y
    return z

所以现在我们可以称之为:

result = sum_number(4)
print(result) # 4

result = sum_number(4, 6)
print(result) # 10


调用sum_number函数的另一种方法如下所示:

result = sum_number(x=4, y=6)

这将在编码时更加清晰,并且是良好的做法。

如果我们不知道该功能有多少参数,该怎么办?

def employee(name, *args):
    print(name)
    print(args)

现在我们可以称之为上面的功能 

employee("Mark", 123, 3.14, "Rohit")
#or
employee("Mark", 123)

正如我们在上一篇文章中探索的元组,(如果您不了解元组,我强烈建议通过 Python用于数据科学 - 第1部分)让我们看看我们如何在功能中使用它们。这里用于演示功能,我将写入返回元组的函数。以下是以下代码:

def sayHi(name, message):
     fName = name.capitalize()
     fmessage = message + '!!!'
     tupple_result = (fName, fmessage)
     return tupple_result

name, message = sayHi('python', 'Welcome to python course')
print(name) # Python
print(message) # Welcome to python course!!!

In the code shown above, you would have noticed that we are creating a tuple tupple_result. Which we are returning from the function. The when we are calling a function we are storing the result in separate variables: name and message.

关键词论据

当我们不确定函数可能需要的参数数时,使用关键字参数。要了解它,请考虑下面显示的示例:

def employee(name, **kwargs):
    print(name)
    print(kwargs["id"], kwagrs["name"])

我们可以称之为:

employee("Mark", id=123, name="Rohit")

输入

我们可以通过输入功能中的Python构建来接受输入,如下所示:

name = input('Enter employee name')
print(name)

嵌套功能

我们甚至可以嵌套现有功能中的函数。嵌套功能可以访问嵌套功能中定义的变量。请参阅下面显示的代码以声明嵌套功能:

def declare():
   name= 'Python'

   def getName():
         print(name)

Python中的文件

我们可以在Python中执行文件相关操作。我们可以执行写入数据等操作,从文件读取数据等。请参阅下面显示的示例:

f = open('employee.txt', a);

We have used open function to read file, where a stands for append. There are some other access mode in Python. These are:

  1. W - 写道
  2. r - 读书
  3. RB - 以二进制模式读取
  4. WB - 以二进制模式写入

lambda功能

这些是一个没有任何名称的匿名函数。它没有def关键字。

result = lambda x: x+10

哪个等于:

def result(x):
    x = x+ 10

我们可以调用lambda函数:

result(10)

面向对象的Python编程

如果您以像Java,C#和批次等面向对象的语言工作,您必须知道面向对象编程的力量。 Python还支持面向对象的编程,我们可以在Python中定义一个类。让我们探索更多如何在Python中实现这一目标。

创建类

在Python中创建类具有与任何其他编程语言相似的结构。下面是在Python中创建类的语法。

class Employee:
    def EmployeeName(self, name):
        print(name)

emp = Employee()
emp.EmployeeName('Tavish')

笔记: Here we are passing self argument to function, which has to be a first argument in python. Don't be confuse. Try to think it as this keyword as any other programming language.

构造师

构造师 method in python is defined as __init__(). Let's try to replace the above function method as constructor method.

class Employee:
    def __init__(self, name):
        print(name)

emp = Employee("Tavish")

Let's explore more about self Self keyword is a keyword which is aware of all the properties in the class. Confused? Let's understand with the help of an example:

class Employee:
    def setName(self, name):
        self.name = name
        
    def getName(self):
        print(self.name)

emp = Employee()
emp.setName('Tavish')
emp.getName()

In the example shown above, I am using setters and getters to set employee name. And employee name is set in self.name. So this means that now Employee class is aware that name property exists in the class and can be used anywhere in the class. As I am using here in a getName method.

全局变量

我们还可以定义与实例更改不会更改的变量。请参阅下面显示的示例:

class Employee:
    company = "Test co.in"

    def __init__(self, name):
        print(name +' ' + self.company)

emp = Employee("Tavish")
emp = Employee("Employee")

print(Employee.company)


#Output

Tavish Test co.in
Employee Test co.in
Test co.in

In the code shown above, we have created two instances of the Employee class, but you will notice that in output company remains the same.

Also, you might have noticed that we can even directly able to access company without even creating the instance of the class.

遗产

当我们学习面向对象的编程时,了解遗产是如何工作的。让我们挖掘它,了解Python的继承方式。

Suppose we have Employee class that we have defined earlier. But now we need to have EmployeeCompany class to find out where the employee is working.

That means we need to inherit Employee class in EmployeeCompany class.

class Employee:
    company = "Test co.in"
    def __init__(self, name):
        print(name +' ' + self.company)
        
    def get_company(self):
        print(self.company)


class EmployeeCompany(Employee):
    company = "Example co.in"
    
    def get_company(self):
        print(self.company)


emp = EmployeeCompany("Tavish")
emp.get_company()

emp = Employee("Tavish")
emp.get_company()

笔记: Here in above example Employee is parent class and EmployeeCompany is derived class.

很多代码!!!让我们通过块来理解它。

1. In the code shown above, I am able to call Employee constructor despite creating an instance of EmployeeCompany. The reason is clear that class is inherited.

2. I am also able to overwrite the methods in two class. You can notice that I have get_company method defined in both the class. Now if I call get_company method by creating an instance of EmployeeCompany class the EmployeeCompany class get_company method will be executed.

3. And if I call get_company method by creating an instance of Employee class the Employee class get_company method will be executed.

超级关键词

我们还有一个超级关键字,我们可以调用父类的方法。让我们了解以下示例的帮助:

class Employee:
    company = "Test co.in"
    def __init__(self, name):
        print(name +' ' + self.company)
        
    def get_company(self):
        print(self.company)

class EmployeeCompany(Employee):
    company = "Example co.in"
    
    def get_company(self):
        super().get_company()
        print(self.company + " From EmployeeCompany class")

emp = EmployeeCompany("Tavish")
emp.get_company()

In the example shown above, you will notice that in EmployeeCompany class get_company method we have a super keyword. It will call the get_company method of Employee class. So the output from above code will be:

#output
Tavish Example co.in
Example co.in
Example co.in From EmployeeCompany class

Python的模块

我们可以在各种文件中打破我们的代码。

例如:

  1. Our Employee class is in employee.py file
  2. Our EmployeeCompany class is in employeeCompany.py file

And we have our main.py file having the following lines of code:

emp = EmployeeCompany("Tavish")
emp.get_company()

如果我们运行代码,我们将降落到错误,因为`main.py`文件不知道员工分类类。我们可以使用导入语句来解决此问题,如下所示:

from employeeCompany import EmployeeCompany

Adding the above line at top of the main.py file will fix the issue.

用于机器学习的Python库

因为我们掌握了对Python的良好知识。现在是时候潜入并查看Python提供解决机器学习问题的软件包了。

  1. numpy - 用于科学计算
  2. Pandas - 让您轻松分析数据
  3. Matplotlib - 用于2D绘图
  4. Scikit - 用于执行许多机器学习操作,如数据预处理。

我们将在使用机器学习潜入模型时使用这些库。要了解它的更多信息,请参阅帖子  python数据科学包.

额外提示

如何将Python代码转换为可执行文件?

答案是pyinstaller。

要在下面的命令下安装pyinstaller:

pip3 install pyinstaller

笔记: PIP或PIP3是Python的包管理器。

要创建EXE文件:

pyinstaller. <rootfile.py>

就是这样。它会生成一个exe文件。但是,您会注意到将有很多文件将在Dist文件夹中生成。 

要生成一个可执行文件,我们可以将--onefile标志传递给pyinstaller,如下所示:

pyinstaller. --onefile <rootfile.py>

现在我们只在Dist文件夹中找到一个可执行文件。

有关Pyinstaller的更多信息 pyinstaller. documentation.

我们不会将代码作为exe文件运送。正确的?我们需要用户安装我们的应用程序才能使用它。我们需要安装的向导使用应用程序将安装在PC上。让我们研究如何为用户生成安装向导以安装应用程序。

InnOSetup用于Windows生成设置管理器。 innoSetup本身就是自我解释,因为它通过我们可以生成设置文件的各种步骤来实现自我解释。请通过 文件 如果你有任何问题。

希望您对Python基础知识了解。

作者信息

Tavish Aggarwal.

网站: http://tavishaggarwal.com

Tavish Aggarwal.是一个数据科学家 在一个海德拉巴工作,具有广泛的经验,在跨电子商务,财务,医疗保健等等不同领域解决现实世界的业务问题。 他对技术充满热情,喜欢在团队中工作。

类别