0. Файлы для скачивания

Windows Python 2.6 numpy
scipy
matplotlib
Python 2.7 numpy
scipy
matplotlib
Python 3.2 numpy
scipy
matplotlib
Python 3.3 numpy
scipy
matplotlib
Maс OS X 10.6 Python 2.7 numpy
scipy
matplotlib
Модуль для питона, файл с данными

1. Модуль Sis

Пример использования

Найдём множество идентификаторов всех школьников, которые есть в смене 2014.Август:

from Sis import *

students = set()

for entry in history():
    if not (entry.student and entry.year == 2014 and entry.month == 8):
        continue
    students.add(entry.person)
    
print(students)

Поля одной записи из базы

Поле Синоним Примеры значений Описание
session_id session 31 Уникальный идентификатор смены (число от 1 до 31)
session_year year 2014 Год смены
session_month month 8 Месяц смены
group_full 'C3.py' Полное название группы
parallel 'C.py' Название параллели
group 3 Номер группы
job_id job 20 Номер профессии (для администрации)
person_id person 793 Уникальный идентификатор человека
grade 10, None Класс школьника
student True Является ли человек школьником
prep False Является ли человек преподавателем в какой-либо параллели
level 6, None Уровень — число, зависящее от параллели: от 0 для младших параллелей до 10 для преподавателей. Если уровень неизвестен (например, для администрации), возвращается None
winter False Является ли смена зимней
parallel_short 'C' Короткое название параллели (T, W, K, S, P, A0, A, A', B, B', C, C', D, E, F или M)

Переменные, доступные при подключении модуля

Название Описание
parallels Список коротких названий параллелей
parallel_colors Словарь, сопоставляющий короткому названию параллели цвет, где цвет — список из трёх чисел от 0 до 1
parallel_levels Словарь, сопоставляющий короткому названию параллели уровень
grade_colors Словарь, сопоставляющий классу школьника цвет
level_formatter Форматтер, сопоставляющий уровню параллель
summer_session_formatter Форматтер, сопоставляющий номеру летней смены её название

2. Полезные возможности Python

collections.defaultdict

Бывает нужно создать словарь, который бы считал, что всем ключам по умолчанию соответствует некоторое конкретное значение, например, 0 или []. Здесь придёт на помощь класс defaultdict из модуля collections. Например, так можно узнать, сколько в списке a цифр 1, 5 и 7.

from collections import defaultdict

d = defaultdict(int)    # int() равно 0
a = [1, 1, 6, 1, 5, 9]
for x in a:
    d[x] += 1           # не нужно проверять, есть ли x в a: если нет, к нулю (по умолчанию) прибавится 1
print(d[1], d[5], d[7]) # выведет "3 1 0"

Если нужно создать, например, словарь словарей списков, используется следующая конструкция:

d = defaultdict(lambda: defaultdict(list))
d['key1']['key2'].append(473)  # никаких ошибок, теперь d['key1']['key2'] = [473]
Здесь параметр, с которым создаётся defaultdict, — это функция, возвращающая defaultdict(list), то есть словарь, у которого значение по умолчанию — пустой список. Это удобнее составного ключа d['key1', 'key2'] тем, что в нашем способе можно легко перебрать все 'key2', соответствующие ключу 'key1'.

for по временному массиву

for role, color, label in (('prep', 'g', 'Преподаватели'), ('student', 'b', 'Школьники')):
    print('English name is {}, russian name is {}, color is {}'.format(role, label, color))

3. Модуль matplotlib

Пример

import matplotlib.pyplot as plt

plt.title('Название графика')   # устанавливаем название
plt.grid()                      # добавляем сетку

n = 20
xs = [i / n for i in range(n + 1)]
for power, name, color in ((2, 'square', 'g'), (3, 'cube', 'b')):  # рисуем x**2 и x**3
    plt.plot(xs, [x ** power for x in xs], lw = 3, c = color, label = name)
    
plt.legend(loc = 'upper left')  # разместить легенду в верхнем левом углу
plt.show()                      # показать график

Типы графиков

plt.plot

Простой график по точкам. Пример:
plt.plot([2012, 2013, 2014], [300, 320, 354], lw = 3, c = 'green', label = 'Something')
Аргумент Именованный? Примеры значений Описание
x нет [2013, 2014] Список x-координат
y нет [320, 354] Список y-координат
lw да 3 Толщина линии
c да 'g', 'green', (0.1, 0.9, 0.2) Цвет линии
label да 'Title' Название для легенды

plt.stackplot

Накопительный график. Пример:
plt.stackplot([2012, 2013, 2014], [[1, 2, 3], [3, 2, 5], [4, 2, 1]], lw = 0, colors = ['r', 'g', 'b'])
Аргумент Именованный? Примеры значений Описание
x нет [2013, 2014] Список x-координат (N элементов)
y нет [[1, 2], [3, 1], [4, 3]] Двумерный список размера M×N: для каждого ряда данных список y-координат
lw да 0 Толщина разделительных линий
colors да ['r', 'g', 'b'] Цвета областей (список из M цветов)