Способы чтения данных из файла
Допустим, нам нужно считать пары точек x, y из файла. Например, для того, чтобы в дальнейшем воспользоваться интерполяцией. Рассмотрим несколько способов, которыми мы можем воспользоваться.
1. Построчное считывание.
Ну, здесь все просто. Не забываем привести данные к типу float или int.
2. С использованием функционального программирования.
Заменяем цикл в предыдущем выражении на map().
3. С использованием numpy.
Воспользуемся numpy.loadtxt().
#file
Допустим, нам нужно считать пары точек x, y из файла. Например, для того, чтобы в дальнейшем воспользоваться интерполяцией. Рассмотрим несколько способов, которыми мы можем воспользоваться.
1. Построчное считывание.
Ну, здесь все просто. Не забываем привести данные к типу float или int.
def load(filename):
data = []
with open(filename, “r”) as file:
for line in file:
data.append([float(item) for item in line.split()])
return data
2. С использованием функционального программирования.
Заменяем цикл в предыдущем выражении на map().
def load(filename):
with open(filename, “r”) as file:
data = [list(map(float, line.split())) for line in file]
return data
3. С использованием numpy.
Воспользуемся numpy.loadtxt().
def load(filename):
import numpy as np
dt = np.dtype([(“x”, float), (“y”, float)])
data = np.loadtxt(filename, dtype=dt)
return data
#file
Containment checking
Допустим, мы создаем небольшой список из пяти элементов и одно генераторное выражение. Если мы сейчас попробуем проверить, содержится ли число 5 в списке, то ответом будет True. С генераторным выраженим должно быть так же, верно? Попробуем проверить. Получаем, что 5 содержится и в нем. Но если мы поинтересуемся еще раз, содержится ли 5 в выражении, получим False.
Не забываем, что генераторное выражение не есть кортеж, для того чтобы создать кортеж, необходимо воспользоваться конструктором tuple().
#tips
Допустим, мы создаем небольшой список из пяти элементов и одно генераторное выражение. Если мы сейчас попробуем проверить, содержится ли число 5 в списке, то ответом будет True. С генераторным выраженим должно быть так же, верно? Попробуем проверить. Получаем, что 5 содержится и в нем. Но если мы поинтересуемся еще раз, содержится ли 5 в выражении, получим False.
Не забываем, что генераторное выражение не есть кортеж, для того чтобы создать кортеж, необходимо воспользоваться конструктором tuple().
#tips
Unpacking
Создадим небольшой словарь из двух пар элементов ключ-значение, и попробуем его распаковать используя multiple assignment. Должно быть вы ожидали, что распаковка вернет вам два кортежа вида (ключ, значение), либо же мы получим ошибку. Однако, питон позволяет нам провести распаковку словаря, хотя и не возвращает пары ключ-значение. Вместо этого вы получите ключи.
Для того, чтобы вернуть именно пары ключ-значение, необходимо использовать dict.items() (работает в Python 3).
#tips
Создадим небольшой словарь из двух пар элементов ключ-значение, и попробуем его распаковать используя multiple assignment. Должно быть вы ожидали, что распаковка вернет вам два кортежа вида (ключ, значение), либо же мы получим ошибку. Однако, питон позволяет нам провести распаковку словаря, хотя и не возвращает пары ключ-значение. Вместо этого вы получите ключи.
Для того, чтобы вернуть именно пары ключ-значение, необходимо использовать dict.items() (работает в Python 3).
#tips
Перечисление
Если применить enumerate() к какому-либо итерируемому объекту, можно получить индекс объекта и сам объект. Опциональный аргумент в enumerate позволяет задать начальный индекс.
#enumerate #tips
Если применить enumerate() к какому-либо итерируемому объекту, можно получить индекс объекта и сам объект. Опциональный аргумент в enumerate позволяет задать начальный индекс.
#enumerate #tips
12 небольших фишек для улучшения твоего кода
1. Обмен значений
2. Получение строки из списка
3. Разбиение строки на список
4. Инициализация листа каким либо значением
5. Слияние словарей
6. Переворачивание строки
7. Возврат нескольких переменных из функции
8. Итерирование по словарю
9. Инициализация пустых контейнеров
10. Удаление символов в конце строки
11. Проверка занимаемой объектом памяти
12. Нахождение наиболее частого элемента в списке
#tips
1. Обмен значений
x, y = 1, 2
x, y = y, x
2. Получение строки из списка
a_list = [‘I’, ‘like’, ‘python’, ‘programming’]
a_string = “ “.join(a_list)
3. Разбиение строки на список
a_string = ‘I like python programming’
a_list = a_string.split()
4. Инициализация листа каким либо значением
[0]*1000 # лист, заполненный 1000 нулями
[1]*1000 # лист, заполненный 1000 единицами
5. Слияние словарей
x = {‘a’:1, ‘b’:2}
y = {‘c’:3, ‘d’:4}
z = {**x, **y}6. Переворачивание строки
a = ‘My string’
a = a[::-1]
7. Возврат нескольких переменных из функции
def test(x,y):
return x,y
a,b = test(1,2)
8. Итерирование по словарю
a_dict = {‘a’:1, ‘b’:2, ’c’:3}
for k, v in a_dict.items():
print(‘{0}:{1}’.format(k, v))9. Инициализация пустых контейнеров
a_list = list()
a_dict = dict()
a_set = set()
a_tuple = tuple()
10. Удаление символов в конце строки
my_string = ‘My string///‘
my_string.strip(‘/‘)
11. Проверка занимаемой объектом памяти
import sys
x = 1
print(sys.getsizeof(x))
12. Нахождение наиболее частого элемента в списке
a_list = [1, 2, 3, 1, 1, 4, 1, 4, 4, 1]
print(max(set(a_list), key=a_list.count))
#tips
Тернарный оператор в python
Тернарным оператором является сокращённая форма записи условного выражения if-else. Такой подход позволяет быстро проверить условие, а не писать несколько строчек оператора if. Зачастую это очень удобно, поскольку позволяет писать более компактный код, сохраняя его читабельность.
#if
Тернарным оператором является сокращённая форма записи условного выражения if-else. Такой подход позволяет быстро проверить условие, а не писать несколько строчек оператора if. Зачастую это очень удобно, поскольку позволяет писать более компактный код, сохраняя его читабельность.
#if
Пробуем beautiful soup на вкус
https://telegra.ph/Pishem-prostoj-veb-skraper-dlya-kriptovalyut-02-09
https://telegra.ph/Pishem-prostoj-veb-skraper-dlya-kriptovalyut-02-09
Telegraph
Пишем простой веб-скрапер для криптовалют
Где-то год назад ко мне обратились с просьбой написать простенький веб-скрапер криптовалют. Это было в качестве тестового задания для какой-то вакансии. Для чего вообще нужен этот скрапер? Для доступа к данным интересующего тебя сайта в автоматическом режиме.…
Изменение словаря во время итерации по нему
▪️Вообще говоря не стоит изменять словарь, по которому происходит итерация
▪️Эта штука срабатывает только восемь раз, ведь именно это та точка, в которой словарь должен был бы изменить размер, чтобы удержать больше ключей (стандартно есть только восемь записей, поэтому меняйте размер, если нужно). Это фактическая деталь реализации.
#dict #tips
▪️Вообще говоря не стоит изменять словарь, по которому происходит итерация
▪️Эта штука срабатывает только восемь раз, ведь именно это та точка, в которой словарь должен был бы изменить размер, чтобы удержать больше ключей (стандартно есть только восемь записей, поэтому меняйте размер, если нужно). Это фактическая деталь реализации.
#dict #tips
Python становится одним из самых популярных языков программирования в мире
«Я ТОЧНО не собирался создавать язык, предназначенный для массового потребления», - говорил Гвидо ван Россум, голландский ученый-компьютерщик, который разработал язык программирования Python в 1989 году. Но спустя почти три десятилетия его изобретение обогнало почти всех его конкурентов.
#news
«Я ТОЧНО не собирался создавать язык, предназначенный для массового потребления», - говорил Гвидо ван Россум, голландский ученый-компьютерщик, который разработал язык программирования Python в 1989 году. Но спустя почти три десятилетия его изобретение обогнало почти всех его конкурентов.
#news
Друзья, нас уже 300.
Я пока еще не пробовал писать на тему data science, но в будущем я думаю, это возможно (если вам будет интересен подобный формат).
А пока что, ловите подборку интересных материалов.
🐍 Набор полезных ссылок про Python для аналитики данных
🔸 Масштабное и хорошо оформленное руководство по библиотеке pandas. Освещает вопросы загрузки данных, очистки и подготовки данных, применения условий для фильтрации.
🔸 Отличная статья о том как вытаскивать данные из PostgreSQL в Питоне с помощью psycopg2.
🔸 Если вы работаете с Google BigQuery, то вам может пригодится инструкция о том как выгружать и загружать данные в BigQuery с помощью Python.
Новые материалы и подборки также читайте на канале, посвященном data science: @datalytx
Я пока еще не пробовал писать на тему data science, но в будущем я думаю, это возможно (если вам будет интересен подобный формат).
А пока что, ловите подборку интересных материалов.
🐍 Набор полезных ссылок про Python для аналитики данных
🔸 Масштабное и хорошо оформленное руководство по библиотеке pandas. Освещает вопросы загрузки данных, очистки и подготовки данных, применения условий для фильтрации.
🔸 Отличная статья о том как вытаскивать данные из PostgreSQL в Питоне с помощью psycopg2.
🔸 Если вы работаете с Google BigQuery, то вам может пригодится инструкция о том как выгружать и загружать данные в BigQuery с помощью Python.
Новые материалы и подборки также читайте на канале, посвященном data science: @datalytx
Недавно хотел написать подобный пост про *args и **kwargs. Стоит добавить только, если вы хотите использовать и *args, и **kwargs, то это делается так: func(fargs, *args, **kwargs), причем порядок следования аргументов важен.
Forwarded from Python Lounge: работа и стажировки для программистов
Сегодня мы разберем с виду сложную, но легкую в использовании конструкцию, которую можно применить практически везде
*args, **kwargs #урок 16
*args, **kwargs #урок 16
Telegraph
*args, **kwargs
Думаю, многие хоть раз видели такую запись, сейчас мы узнаем, что это за магические символы. Сообщу заранее, что args и kwargs - общепринятые имена переменных, а разбирать мы будем звездочки перед нимим. def func(*args, **kwargs): # code *args Рассмотрим…
all() & any()
all() и any() — это встроенные методы, которые позволяют проверить элементы списка на выполнение заданного условия
▪️Встроенная функция all() - идет по списку True/False (либо выражений, сводящихся к этим значениям) и прекращает проверку после первого элемента, не удовлетворяющего условию
▪️Функция any() проверяет те же условия хотя бы для одного элемента
▪️all() и any() могут обрабатывать не только списки, но и любые итерируемые объекты
#tips
all() и any() — это встроенные методы, которые позволяют проверить элементы списка на выполнение заданного условия
▪️Встроенная функция all() - идет по списку True/False (либо выражений, сводящихся к этим значениям) и прекращает проверку после первого элемента, не удовлетворяющего условию
▪️Функция any() проверяет те же условия хотя бы для одного элемента
▪️all() и any() могут обрабатывать не только списки, но и любые итерируемые объекты
#tips
Внешний вид кода
Есть такое понятие как PEP 8. Это специальный стандарт, правило хорошего тона, если хотите. Единый стиль оформления делает код понятным как для самого программиста, так и для его коллег с разным уровнем подготовки.
В идеале наиболее сложный фрагмент кода должен быть понятен с первого прочтения.
PEP 8 затрагивает следующие основные моменты:
▪️выбор кодировки исходного кода
▪️группировку инструкций по импорту модулей
▪️максимальную длину строки кода — рекомендуется до 79 знаков, а для строк документации (docstring) — 72 знака
▪️использование отступов — табуляции и пробелов
▪️использование пустых строк для разбивки кода на блоки и выделения функций верхнего уровня
▪️использование комментариев
▪️именование переменных, констант, классов и экземпляров, функций, аргументов, модулей, пакетов
▪️выбор уровня доступности классов и методов (public, private, API-подклассы), а также порядка их наследования.
Также оставляю ссылку тут
#pep8
Есть такое понятие как PEP 8. Это специальный стандарт, правило хорошего тона, если хотите. Единый стиль оформления делает код понятным как для самого программиста, так и для его коллег с разным уровнем подготовки.
В идеале наиболее сложный фрагмент кода должен быть понятен с первого прочтения.
PEP 8 затрагивает следующие основные моменты:
▪️выбор кодировки исходного кода
▪️группировку инструкций по импорту модулей
▪️максимальную длину строки кода — рекомендуется до 79 знаков, а для строк документации (docstring) — 72 знака
▪️использование отступов — табуляции и пробелов
▪️использование пустых строк для разбивки кода на блоки и выделения функций верхнего уровня
▪️использование комментариев
▪️именование переменных, констант, классов и экземпляров, функций, аргументов, модулей, пакетов
▪️выбор уровня доступности классов и методов (public, private, API-подклассы), а также порядка их наследования.
Также оставляю ссылку тут
#pep8
Правильным ответом на предыдущий вопрос будет [1], [1]. Это происходит потому, что в python отсутствует механизм копирования при записи. Создадим переменную a и проверим ее адрес с помощью оператора id():
теперь для b:
Для создания копии можно воспользоваться следующим нехитрым приемом, взять срез листа a:
В таком случае созданный объект будет полноценной копией.
Либо можно воспользоваться оператором deepcopy из модуля copy.
>>> a = [0]
>>> id(a)
4349920392
теперь для b:
>>> b = a
>>> id(b)
4349920392
Для создания копии можно воспользоваться следующим нехитрым приемом, взять срез листа a:
>>> b = a[:]
>>> id(b)
4349922696
В таком случае созданный объект будет полноценной копией.
Либо можно воспользоваться оператором deepcopy из модуля copy.
dir
Как насчет заглянуть внутрь объекта в python и посмотреть на его атрибуты? Используем интерактивную оболочку python:
и даже так
#tips
Как насчет заглянуть внутрь объекта в python и посмотреть на его атрибуты? Используем интерактивную оболочку python:
>>> dir()
>>> dir(2)
['__abs__', '__add__', '__and__', '__bool__’,…]
и даже так
>>> dir(dir)
['__call__', '__class__', '__delattr__’,…]
#tips
Упрощение конструкций с if
Если тебе нужно проверить несколько значений, делай так:
а не так:
#tips
Если тебе нужно проверить несколько значений, делай так:
if (item in [1,2,3]):
а не так:
if (item==1 or item==2 or item==3):
#tips
Красивый вывод
Ты можешь красиво выводить на экран словари и списки с помощью pretty-print:
Нагляднее это, конечно, при работе со словарями. Кроме того, можно выводить информацию из JSON-файлов.
#pprint
Ты можешь красиво выводить на экран словари и списки с помощью pretty-print:
from pprint import pprint
pprint(m_dict)
Нагляднее это, конечно, при работе со словарями. Кроме того, можно выводить информацию из JSON-файлов.
#pprint