Hưỡng dẫn sử dụng IPython Notebook

Ipython Notebook là công cụ soạn thảo chuyên nghiệp bởi vì nó hỗ trợ nhiều tiện ích như LaTex, biểu đồ… đặc biệt nó cho phép soạn thảo code Python và chạy trực tiếp.

Cách đọc file .ipynb

Bước 1: Tải về và cài đặt Anaconda

Bước 2: Chạy Anaconda Command Prompt

Bước 3: Chuyển về thư mục chứa file Ipython Notebook (*.ipynb)

Ví dụ: cd e:/myipynb/

Bước 4: Gõ jupyter-notebook

Chương trình sẽ đưa cho bạn một đường dẫn localhost để mở xem file .ipynb

Hướng dẫn sử dụng cơ bản

Mỗi tập tin IPython Notebook được cấu tạo từ các cell. Ở mỗi cell bạn có thể viết và thực thi câu lệnh. Như đã biết IPython Notebook mạnh mẽ ở khả năng viết code và soạn thảo văn bản do đó có 2 loại cell tương ứng với tên gọi là Code Cell  Markdown Cell.

yeulaptrinh.pư-python-notebook-cell

Markdown Cell và Code Cell

Khi tạo một tập tin mới, một cell được tạo sẵn (cell có dòng In[]: phía trước) đó là Code cell, để có thể chuyển sang Markdown cell, bạn chỉ cần nhấn Esc mất con trỏ nhấp nháy sau đó nhấn phím M. Để chuyển ngược lại sang Code Cell, bạn hãy nhấn phím Y. Đó là 2 trong số rất nhiều thao tác thường xuyên sử dụng, bạn hãy nhấn phím H để xem tất cả các phím tắt.

 

 

Pandas trong Python

Pandas là một gói công cụ viết bằng Python, được sử dụng nhiều trong xử lý và phân tích dữ liệu. Pandas cũng được kèm theo khi cài đặt Anaconda.

Trong phần này, ta sẽ thực hành việc nhập dữ liệu thực tế vào DataFrame của Pandas, sau đó sử dụng các kỹ thuật khác để trích xuất những phần thông tin ta cần từ trong tập dữ liệu.

Chuyển dữ liệu từ file CSV sang DataFrame trong pandas

DataFrame là một cấu trúc dữ liệu quan trọng nhất của pandas, được dùng để lưu trữ dữ liệu dạng bảng, hỗ trợ ta đặt tên cho các cột và các hàng.

Trong bài tập này, ta sẽ làm việc với dữ liệu giao thông của một số quốc gia. Mỗi mẫu là dữ liệu của một quốc gia, bao gồm các thông tin về số lượng phương tiện trung bình trên đầu người, vô-lăng ở bên trái hay phải xe,… Dữ liệu này được đặt trong file "cars.csv", file này nằm trong thư mục hiện tại ta đang làm việc. Toàn bộ dữ liệu trong file được trình bày như sau:

[[code]]czoxODc6XCIsY2Fyc19wZXJfY2FwLGNvdW50cnksZHJpdmVzX3JpZ2h0DQpVUyw4MDksVW5pdGVkIFN0YXRlcyxUcnVlDQpBVVMsNzN7WyYqJl19MSxBdXN0cmFsaWEsRmFsc2UNCkpBUCw1ODgsSmFwYW4sRmFsc2UNCklOLDE4LEluZGlhLEZhbHNlDQpSVSwyMDAsUnVzc2lhLFRydXtbJiomXX1lDQpNT1IsNzAsTW9yb2NjbyxUcnVlDQpFRyw0NSxFZ3lwdCxUcnVlDQpcIjt7WyYqJl19[[/code]]
Dòng đầu tiên là tên của các cột dữ liệu. Mỗi dòng tiếp theo là dữ liệu ứng với từng quốc gia. Dữ liệu ở các cột được phân cách bởi dấu phẩy.

Để đọc dũ liệu từ file .csv vào DataFrame trong Pandas, ta dùng hàm read_csv() (tham khảo hàm này tại đây).

Numpy trong Python

Numpy (hay Numeric Python) là một gói công cụ hỗ trợ tính toán rất hiệu quả trên mảng (array), nhanh hơn rất nhiều so với tính toán trên danh sách (list) mặc định của Python. Ngoài ra, numpy còn hỗ trợ các phép tính trực tiếp trên toàn bộ mảng, chứ không cần phải duyệt qua từng phần tử của mảng. Ví dụ:

import numpy as np
 
A = np.array([1, 2, 3])
B = np.array([4, 5, 6])
 
C = A + B
 
print(C)

Lưu ý, một mảng của numpy sẽ chỉ lưu trữ duy nhất một kiểu dữ liệu, khác với danh sách thông thường của Python. Đây là một trong các lý do mà các tính toán trên mảng của numpy được thực hiện nhanh hơn rất nhiều.

Bạn hãy chú ý, như trong ví dụ trên, phép cộng (+) trên 2 mảng numpy cũng được thực hiện khác trên 2 danh sách thông thường. Phép cộng được thực hiện như sau: từng phần tử của A được cộng với phần tử có chỉ số tương ứng trong B. Các phép tính số học khác như -, * hay / cũng được thực hiện tương tự như vậy đối với mảng numpy.

Numpy là một gói công cụ mạnh mẽ, được sử dụng rất nhiều trong các ứng dụng của Khoa học dữ liệu.

Tạo mảng `numpy` 2 chiều

Các kiểu dữ liệu trong Python

Mình xin được liệt kê các kiểu dữ liệu trong Python để các bạn tiện theo dõi.

  • int, tức kiểu số nguyên. Ví dụ: biến savings, giá trị là 1000.
  • float, tức kiểu số thực. Ví dụ: biến factor, giá trị là 1.1.

Ngoài dữ liệu kiểu số, chúng ta còn một số kiểu dữ liệu thông dụng khác như:

  • str, kiểu xâu (chuỗi) ký tự: dùng để biểu diễn 1 đoạn văn bản. Trong Python, một xâu được khai báo ở trong 2 dấu " hoặc 2 dấu '.
  • bool, kiểu giá trị logic: chỉ nhận 2 giá trị là TrueFalse.

Toản tử trong Python

Python cũng có thể được dùng như một chiếc “máy tính cầm tay” để thực hiện các phép tính cơ bản: cộng (+), trừ (-), nhân (*), chia (/) và các phép tính phức tạp hơn như:

  • Phép lũy thừa: **. Ví dụ: kết quả của 4 ** 216
  • Phép chia lấy phần dư: %. Ví dụ: kết quả của 10 % 31

Toán tử so sánh:

Trong Python, để so sánh 2 đối tượng có bằng nhau không, ta sử dụng toán tử ==. Ví dụ:
print(2 == 2) == True

Ngoài ra, ta còn sử dụng các toán tử so sánh khác như:

  • != (khác)
  • > (lớn hơn)
  • < (nhỏ hơn)
  • >= (lớn hơn hoặc bằng)
  • <= (nhỏ hơn hoặc bằng)

Trong Python, kết quả của các phép so sánh là các giá trị True (đúng) hoặc False (sai).

Toán tử Bool

and, or, not  

Chuyển đổi kiểu dữ liệu (Ép kiểu)

Chúng ta mới chỉ thực hiện các phép toán trên các biến cùng kiểu dữ liệu. Ngược lại, nếu thực hiện phép toán trên các kiểu dữ liệu khác nhau, có thể sẽ xảy ra lỗi. Ví dụ nếu thực thi đoạn lệnh sau:

print("Tôi gửi ngân hàng $" + savings + ", sau 15 năm, bây giờ tôi đã có $" + result + ". Tuyệt vời!")
trình biên dịch của Python sẽ báo lỗi, lý do là bạn không thể thực hiện phép cộng một xâu ký tự với một số nguyên/thực được.

Để giải quyết vấn đề này, chúng ta có thể sử dụng lệnh str() để chuyển kiểu số sang kiểu xâu. Ví dụ: sử dụng str(savings) để chuyển giá trị của savings sang một xâu ký tự.

Với các kiểu dữ liệu khác, ta sử dụng các lệnh tương tự như int(), float() hay bool().

 

Tổng hợp đề thi Giải tích 2, Điện quang…

Sưu tầm đề thi Điện – Quang (Vật lý đại cương 2), Giải tích 2…

của nhiều trường như HUST, UET, HUS, NUCE…

Đề thi Đại học Công Nghệ (UET)

Điện Quang (Vật lý đại cương 2)

Giải tích 2

Giải tích 1

Lập trình hướng đổi tượng (OOP) trên C++

Lập trình hướng đối tượng (Object oriented programming) – như cái tên của nó, ta sẽ viết chương trình chứa các đối tượng (object). Lập trình hướng đối tượng nhằm mục đích triển khai các đối tượng thực tế(như nhà, xe,…). The main aim of OOP is to bind together the data and the functions that operates on them so that no other part of code can access this data except that function.
Let us learn about different characteristics of an Object Oriented Programming language:
Đối tượng: Objects are basic run-time entities in an object oriented system, objects are instances of a class these are defined user defined data types.
ex:

class person
{
    char name[20];
    int id;
public:
    void getdetails(){}
};
int main()
{
   person p1; //p1 is a object
}

Object take up space in memory and have an associated address like a record in pascal or structure or union in C.

When a program is executed the objects interact by sending messages to one another.

Each object contains data and code to manipulate the data. Objects can interact without having to know details of each others data or code, it is sufficient to know the type of message accepted and type of response returned by the objects.

Class: Class is a blueprint of data and functions or methods. Class does not take any space.

Syntax for class:

class class_name
{
  private:
     //data members and member functions declarations
  public:
     //data members and member functions declarations
  protected:
     //data members and member functions declarations
};

Class is a user defined data type like structures and unions in C.

By default class variables are private but in case of structure it is public. in above example person is a class.

Đóng gói và trừu tượng hóa dữ liệu: Wrapping up(combing) of data and functions into a single unit is known as encapsulation. The data is not accessible to the outside world and only those functions which are wrapping in the class can access it. This insulation of the data from direct access by the program is called data hiding or information hiding.

Data abstraction refers to, providing only needed information to the outside world and hiding implementation details. For example, consider a class Complex with public functions as getReal() and getImag(). We may implement the class as an array of size 2 or as two variables. The advantage of abstractions is, we can change implementation at any point, users of Complex class wont’t be affected as out method interface remains same. Had our implementation be public, we would not have been able to change it.

Kế thừa: inheritance is the process by which objects of one class acquire the properties of objects of another class. It supports the concept of hierarchical classification. Inheritance provides re usability. This means that we can add additional features to an existing class without modifying it.

Đa hình: polymorphism means ability to take more than one form. An operation may exhibit different behaviors in different instances. The behavior depends upon the types of data used in the operation.
C++ supports operator overloading and function overloading.
Operator overloading is the process of making an operator to exhibit different behaviors in different instances is known as operator overloading.
Function overloading is using a single function name to perform different types of tasks.
Polymorphism is extensively used in implementing inheritance.

Dynamic Binding: In dynamic binding, the code to be executed in response to function call is decided at runtime. C++ has virtual functions to support this.

Message Passing: Objects communicate with one another by sending and receiving information to each other. A message for an object is a request for execution of a procedure and therefore will invoke a function in the receiving object that generates the desired results. Message passing involves specifying the name of the object, the name of the function and the information to be sent.